字符串与字符数组几个注意点:
- 字符串本质是字符数组,以\0结尾。sizeof("hello);结果是6而非5,因为后面多一个\0的结束符
- 字符串常量是不可修改。char * str = "hello"; *str = 'H';是错误的
- 不能对字符数组名进行运算。如:char str[3] = "ha"; str++;也是错误的
- 字符串结束是数值0(ASCII码值0),而不是字符'0'(ASCII码值48)。为了不与数值0冲突,用转义符\0表示
//初始化列表长度小于字符数组长度 char str1[10] = {'H', 'e', 'l', 'l', 'o'}; //数组长度为10,初始了5个元素,其它元素以\0填充,因此可正常结束 char str2[10] = {'H', 'e', 'l', 'l', 'o', '\0'}; //数组长度10,有6个元素且最后以\0结束,可以正常结束 //初始化列表等于字符数组长度 char str3[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; //刚好6个元素,且以\0结尾,可正常结束 char str4[5] = {'H', 'e', 'l', 'l', 'o'}; //长度为5并有5个元素,没有空间存\0,无法