4.1 数组
1、typeName arrayName[arraySize]
其中arraySize必须是整型常数或const值
2、初始化规则
(1)只有在定义数组的时候才能进行初始化,但是可以使用下标分别给数组中的元素赋值
(2)不能将一个数组的值赋值给另外一个数组
(3)提供的值小于数组的大小,其他部分将用零补齐
(4)arraySize大小不指定,将会自动计算
3、C++11初始化方法
(1)初始化数组可以省略=
(2)大括号中不包含任何东西将把数组初始化为零
(3)列表初始化禁止缩窄操作
4.2 字符串
1、不是所有的字符型数组都是字符串,字符串是以空字符’\0‘作为结尾的char型数组,
2、用引号括起的字符串隐式地包括结尾的空字符,因此不用显示的包含它
3、让字符型数组比字符串长是一种更加安全的处理方式,虽然会浪费一点空间。因为处理字符串的函数往往是根据空字符的位置而不是数组的长度来进行处理的
4、单引号和双引号的含义是不同的,单引号是一个字符常量,对应于一个ASCII码;双引号表示的是一个\0结尾的字符串常量,或者是字符串所在的内存地址
5、连接字符串的拼接:两个拼接字符串中间不会添加空格,第二个字符串的第一个字符将取代第一个字符串\0的位置
6、sizeof会指出整个数组的长度,而strlen(包含在string.h头文件中)返回的是数组中字符串的实际长度,而不是数组的实际长度,并且strlen中计算可见字符(第一次\0出现之前的字符),不包含空字符。例如:cosmic是字符串,strlen(cosmic)=6,但是存储cosmic的数组不能小于strlen(cosmic)+1
7、cin每次读入一个单词,因此引入getline()和get()函数每次读取一行字符串输入
getline()在读取指定数目的字符或者遇到换行符时停止,并将换行符变为\0进行保存
get()函数不能跨过换行符,第二次调用会输出前一次遗留的换行符,get函数会认为已经到达行尾,因此不借助帮助,无法跨越该换行符。因此加入cin.get()可以读取下一个字符,无论是否是换行符,即可以完成跳跃。每次使用get()函数后加一个cin.get()可以保证下一次的正常读取。
getline()的使用更加简单,但是get()更容易检查出错误