1. 保护数组中的数据
如果编写的函数需要修改数组,在声明数组形参时不需要使用const;如果编写的函数不用修改数组,那么在声明形参时最好使用const。
2. 指针和多维数组
① int zippo[4] [2];
数组名zippo代表该数组首元素的地址,在这个数组中zippo的首元素是内含两个int值的数组,所以zippo是这个内含两个int值的数组的地址。
zippo==&zippo[0];
zippo[0]是一个占用一个int大小对象的地址,而zippo是一个占用两个int大小对象的地址,由于这个整数和内含两个整数的数组都开始于同一个地址,所以二者的值相同。
给指针或地址+1,其值会增加对应类型大小的数值,因为zippo指向的对象占用了两个int大小,而zippo[0]占用了一个,所以zippo+1个zippo[0]+1的值不同。
3. 指向多维数组的指针
① 如果p指向一个内含两个int类型值得数组,而不是一个,其声明为: int (* p) [2];
加括号的原因是:[ ]的优先级高于()
② c++允许在声明数组大小的时候使用const整数,但是c不允许;c++不允许把const指针赋给不是const的指针,而c允许。
4. 函数和多维数组
如果junk是一个二维数组,那个junk[i]就是一维数组,可以看做是junk二维数组的一行。
5. 字符串
字符串是以空字符(\0)结尾的char类型数组。
6. puts()函数
puts()函数和printf()函数一样,都属于stdio.h系列的输出函数,但是puts()函数只显示字符串,而且自动在显示的字符串末尾上加上换行符。
7. 字符串常量
① 如果字符串常量之间没有间隔,或者用空白字符分离,c会将其视为串联起来的字符串字常量。
char greeting[50]="Hello, and" " how are" " you" " today!";
char greeting[50]="Hello,and how are you today!";
二者等价。
② 如果要在字符串内部使用双引号,必须在双引号前面加上一个反斜杠(\)。