第4章 复合类型
数组
字符串
结构
共用体:union
声明
数组类型、数组名、元素个数
初始化
大括号初始化:int a[3] = {0,1,2};
数组只有在声明时才可以初始化
部分元素初始化《其余自动置0
不初始化,元素值不确定
C++11初始化器
类似大括号列表初始化
新特性:可以省略等号
{}内不写任何东西,所有元素置0
列表初始化禁止缩窄初始化
C++ STL数组替代品
模板类vector
字符串类型
C风格
C++风格
string 类
字符串常量:自动添加空字符(与字符常量区别)
在数组中使用字符串
字符串常量、从键盘或文件读入到数组
字符串输入
cin:以空白结束(空格、制表符、换行符)
行输入:getling()
混合输入字符和数字
string类
C++89添加string类
C++11允许列表初始化string类
赋值(等号)、拼接(加号、+=)
其他操作:复制、附加、长度确认(str.size()、strlen())
string I/O
定义
1.定义结构描述 2.创建结构数据对象
用户定义,多数据类型
创建步骤:struct
C++结构初始化
C++11 列表初始化(等号可选)
其他属性
成员赋值(成员运算符:.)
结构定义、创建对象可同时完成
结构数组
与创建基本类型数组类似
结构中的字段
应用场景:硬件寄存器、IO设备等
特性
多数据类型分时复用同一存储空间
长度:最大成员长度
多数据类型不同时使用场景,可以节省空间
用途
内存节省技术
特例
匿名共用体
枚举
定义
符号常量的一种方式,默认值:0,1,2,....
特性
允许显式设置枚举量的值
取值范围、枚举量值
指针和自由存储空间
概述
地址变量、地址运算符&、解引运算符*、声明、初始化指针
风险:内存分配给指针变量,但指向的对象内存不分配
new
int * pn = new int;作用类似C中malloc()
new内存在堆、自由存储区。常规变量:栈
与new配对使用,不可多次释放
delete
new与动态数组
静态联编(编译时),动态联编(),sizeof()不可用于动态数组
delete [] psome; 注意方括号
指针、数组和指针算术
特性
指针+1,sizeof()测试数组和指针的区别
指针运算
只有加减
指针、数组、字符串
数组名、字符串首地址
new创建动态结构
撞见结构、访问结构成员的两种方法
三种内存数据存储方式
自动存储、静态存储、动态存储(优缺点)
类型组合
C++替代型数组类
数组、指针、结构组合应用
C++ 自带功能auto:自动推断
C++98 vector动态数组
C++ 11 array常规数组
自动使用new和delete vector<double> vd(n);
常规数组模板类