《c++语言导学》——2.2 结构

2.2 结构

构建新类型的第一步通常是把所需的元素组织成一种数据结构。下面是一个struct的示例:

这是Vector的第一个版本,其中包含一个int和一个double*。
Vector类型的变量可以通过下述形式进行定义:

仅就v本身而言,它的用处似乎不大,因为v的elem指针并没有指向任何实际的内容。为了让它变得更有用,我们需要令v指向某些元素。例如,我们可以构造一个如下所示的Vector:

也就是说,v的elem成员被赋予了一个由new运算符生成的指针,而sz成员的值则是元素的个数。Vector&中的符号&指定我们通过非const引用(见1.8节)的方式传递v,这样vector_init()就能修改传入其中的向量了。
new运算符从一块名为自由存储(free store)(又称为动态内存(dynamic memory)或堆(heap))的区域中分配内存。分配在自由存储中的对象独立于它所处的作用域,它会一直“存活”到使用delete运算符(见4.2.2节)销毁它为止。
Vector的一个简单应用如下所示:

显然,在优雅程度和灵活性上我们的Vector与标准库vector还有很大差距,尤其是Vector的使用者必须清楚地知道它的所有细节。本章余下部分以及接下来的两章将把Vector当作呈现语言特性和技术的一个示例,一步步地完善它。作为对比,第9章介绍标准库vector,在其中蕴含着很多漂亮的改进。
本书使用vector和其他标准库组件作为示例是为了达到以下两个目的:

  • 展现语言特性和程序设计技术;
  • 帮助读者学会使用这些标准库组件。

不要想着重写vector和string等标准库组件,直接使用它们更为明智。
访问struct的成员有两种方式:一种是通过名字或引用,这时我们使用.(点运算符);另一种是通过指针,这时用到的是->。例如:

时间: 2024-09-13 04:15:44

《c++语言导学》——2.2 结构的相关文章

《Java语言导学(原书第6版)》一导读

前 言 自2010年年初Oracle公司收购Sun公司以来,Java语言迎来激动人心的时代.正如Java Community Process计划的活动所印证的,Java语言将不断发展.本书基于Java SE 8(Java Platform Standard Edition 8)并引用其API. 相比本书第5版(针对的是Java版本7),第6版有一些新特点: Lambda表达式使得功能可作为方法参数使用,代码作为数据使用.Lambda表达式描述单个方法接口(也称为功能接口)的实例会更简洁.4.4.

《Java语言导学(原书第6版)》一3.4 控制流语句

3.4 控制流语句 源文件中的语句通常按照出现的先后次序自顶向下执行.控制流语句打破了这种常规,它通过决策.循环和分支等,使程序可以有条件地执行特定的代码块.本节介绍Java程序语言支持的决策语句(if-then.if-then-else.switch).循环语句(for.while.do-while)和分支语句(break.continue.return). 3.4.1 if-then语句和if-then-else语句 1.if-then语句 if-then语句是最基本的控制流语句.该语句使得

《Java语言导学(原书第6版)》一3.2 运算符

3.2 运算符 学习了如何声明和初始化变量之后,下面看看如何利用这些变量来做点事情.学习Java程序语言的运算符是个很好的切入点.运算符是一类特殊的符号,它们执行1个.2个或3个运算对象上的特定操作,然后返回结果. 研究Java程序语言的运算符时,先了解这些运算符的优先级可能会有帮助.表3-2根据优先级顺序列出了所有的运算符.越靠近表的顶端,运算符的优先级越高.优先级较高的运算符先计算,相对较低的后计算.同一行的运算符优先级相等.当表达式中出现优先级相等的运算符时,计算规则如下:赋值运算符从右到

《Java语言导学(原书第6版)》一一3.2 运算符

3.2 运算符 学习了如何声明和初始化变量之后,下面看看如何利用这些变量来做点事情.学习Java程序语言的运算符是个很好的切入点.运算符是一类特殊的符号,它们执行1个.2个或3个运算对象上的特定操作,然后返回结果. 研究Java程序语言的运算符时,先了解这些运算符的优先级可能会有帮助.表3-2根据优先级顺序列出了所有的运算符.越靠近表的顶端,运算符的优先级越高.优先级较高的运算符先计算,相对较低的后计算.同一行的运算符优先级相等.当表达式中出现优先级相等的运算符时,计算规则如下:赋值运算符从右到

《c++语言导学》——第2章 用户自定义类型 2.1 引言

第2章 用户自定义类型 引言 结构 类 联合 枚举 建议 2.1 引言 我们把用基本类型(见1.5节).const修饰符(见1.7节)和声明运算符(见1.8节)构造出来的类型称为内置类型(built-in type).C++语言的内置类型及其操作非常丰富,不过相对来说更偏重底层编程.这些内置类型的优点是能够直接有效地展现出传统计算机硬件的特性,但是并不能向程序员提供便于书写高级应用程序的高层特性.为此,C++语言在充分利用内置类型和操作的基础上,提供了一套成熟的抽象机制(abstraction

《c++语言导学》—— 导读

前言 现在的C++仿佛进化成了一种新的语言.与C++98相比,C++11更易于我们清晰.简洁.直观地表达思想.而且编译器可以更好地检查程序中的错误,程序的运行速度也提高了. 就像其他任何一种现代编程语言一样,C++的规模庞大且提供的库异常丰富,值得程序员认真学习以便高效地利用.这本小册子的目的是让有经验的程序员快速了解现代C++语言,因此它几乎介绍了C++的全部核心功能和重要的标准库组件.读者花费几个小时就能读完本书,但是想必所有人都清楚,要想写出漂亮的C++程序绝非一日之功.好在本书的目的并非

《Java语言导学(原书第6版)》一一第2章 面向对象的编程概念 2.0

第2章The Java Tutorial: A Short Course on the Basics, Sixth Edition面向对象的编程概念如果没有用过面向对象的程序语言,编写Java程序之前一定要先学一些面向对象编程的基本概念.本章介绍对象.类.继承.接口和包等基本概念.每节都通过生活中的例子来解释这些基本概念,同时介绍Java程序语言的语法.2.1节关注对象的概念.对象是具有相关状态和行为的软件.软件对象经常用于建模生活中的对象.本节介绍对象的状态和行为的表示方式以及数据封装的概念,

《Java语言导学(原书第6版)》一第2章 面向对象的编程概念

第2章 面向对象的编程概念如果没有用过面向对象的程序语言,编写Java程序之前一定要先学一些面向对象编程的基本概念.本章介绍对象.类.继承.接口和包等基本概念.每节都通过生活中的例子来解释这些基本概念,同时介绍Java程序语言的语法.

《Java语言导学(原书第6版)》一1.2 “Hello World!”实例程序

1.2 "Hello World!"实例程序 本节详细介绍编译和运行"Hello World!"实例程序的指令.1.2.1节介绍利用集成开发环境NetBeans IDE开发该程序的过程.NetBeans IDE在Java平台上运行,也就是说可在任何配置了JDK的操作系统上运行NetBeans IDE,包括Microsoft Windows.Solaris.Linux和OS X.建议尽可能使用NetBeans IDE取代命令行.1.2.2节和1.2.3节依次介绍不使用