C++ 复合类型
数组:
C++ 11的初始化方式:
列表初始化:
可以省去等号 如:
double earnings[4] {1.23, 123, 1.654e2}
其次, 可不在大括号内包含任何东西, 这将把所有元素清零:
unsigned int counts[200]={}
第三, 列表初始化禁止缩窄转换:
long plifs = { } // 错误
char slifs[4] {1122011} //错误, 1122011 超过了char数组的取值范围
字符串:
char fish[]="asdasdasd"
字符串在输入中会遇到的问题:
1. 无法获取 '\0'
cin.getling():
每次读取一行字符串的输入
用法: cin.getline(name, 20)
这一行将把name 读入到数组中, 读取20个字符
cin.get 读取单次输入, 换行截止
string 类:
C++ 11中也可以用列表初始化 string 类
string类的操作:
string str1 ;
string str2 = str1 //copy str1 to str2
char charr1[2];
char charr2[2]
strcpy(charr1, charr2) // copy charr2 to charr1 等价于 charr1=charr2
共用体:
union
能够存储不同的数据类型, 但是只能同时存储其中的一种
适用情况:
当目标数据类型可能是某几种的一种时, 采用共用体可以减少开销
枚举:
本质为一种符号常量, 可以代替const, 允许定义新类型
enum{ zero, null = 0 , one , numero =1 }
注意, 每定义一个枚举变量, 下一个就会比上一个多1, 但是,枚举可以允许值相同, 所以, zero==null =0
使用指针需要注意的地方:
long *fellow;
*fellow = 2333323 // 将一个值放在了未知的区域
危险的地方:
起初fellow 没有被赋值, 所以fellow可能指向任何地方, 但是223323不知道被放在哪里
于是fellow 指向的地方很可能不是所要存储223323的地方, 这会导致一些难以查询的错误