1.字符数组
定义一个字符数组时,您必须让编译器知道它需要多大空间。
如:
const char msg[40] = "show me the money!";
const表明这个字符串不可以在程序中改变。
这种初始化和下面所示的标准数组初始化相比是很简短的:
const char msg[] = {'s', 'h', 'o', 'w', ' ',
'm', 'e', ' ', 't', 'h',
'e', 'm', 'o', 'n', 'e',
'y', '\0'
};
注意标志结束的空字符。如果没有它,得到的就只是一个字符数组而不是一个字符串。
另外,指定数组大小时,一定要确保数组元素个数比字符串的长度至少多1(多出来的1个元素用来存放空字符)。
未被使用的元素均被自动初始化为\0。这里因为是字符数组,所以初始化为char形式的空字符,而不是数字字符0。
如果在进行初始化声明时省略了数组大小,则该大小由编译器来决定。
但是请注意,如果并非在初始化时就进行声明,则必须为数组明确的分配大小。
#define LINELEN 81 //最大字符串长度 + 1
……
char name[LINELEN];
声明一个数组时,数组的大小必须为整型常量,而不是在运行时得到的变量值。
和任何数组名一样,字符数组名也是数组首元素的地址。应此下面的式子对数组msg成立。
msg == &msg[0]
*msg == 's'
*(msg + 1) == msg[1] == 'h'