c语言注意事项

字符数组初始化注意事项:
1.如果定义数组的时候指定了数组长度, 那么实际存放的字符个数必须小于定义的数组元素个数,因为还需要存放‘\0’,可以不手动添加,系统会自动添加

正确示例:

char s[10] = {'h', 'e', 'l','l', 'o'};系统自动在后面添加5个‘\0’, strlen(s) = 5, sizeof(s) = 10;

strlen: 5
sizeof: 10
i: 0, s[0]: 104
i: 1, s[1]: 101
i: 2, s[2]: 108
i: 3, s[3]: 108
i: 4, s[4]: 111
i: 5, s[5]: 0
i: 6, s[6]: 0
i: 7, s[7]: 0
i: 8, s[8]: 0
i: 9, s[9]: 0

 

char s[10] = {'h', 'e', 'l', 'l', 'o', \0'}; 系统自动在后面添加4个‘\0’, strlen(s) = 5, sizeof(s) = 10;

打印结果与以上一致

如果存放的元素个数与指定的数组元素个数一样大,则系统不会自动添加'\0'

错误示例:

char s[5] = {'h', 'e', 'l','l', 'o'};系统不会自动在后面添加‘\0’, strlen(s) = 5, sizeof(s) = 5;

2.如果定义数组时不指定长度,则在初始化时系统自动添加‘\0’
正确示例:

char s[] = “hello”;系统会自动在后面添加‘\0’, strlen(s) = 5, sizeof(s) = 6;

char s[] = {'h', 'e', 'l', 'l', 'o', '\0',}; 已经有‘\0’系统不会自动在后面添加‘\0’, strlen(s) = 5, sizeof(s) = 6;

char s[] = {'h', 'e', 'l', 'l', 'o', '\0',\0'}; 已经有‘\0’系统不会自动在后面添加‘\0’, strlen(s) = 5, sizeof(s) = 7;

strlen()为字符数组中不为空字符的字符个数,sizeof对象占用的空间,'\0'也占用一个字节的空间

posted @ 2020-07-27 20:55  jiage666  阅读(301)  评论(0编辑  收藏  举报