【发布时间】:2016-10-09 18:26:02
【问题描述】:
以下两个字符数组有什么区别:一个带空字符,一个不带空字符?
char name1[] = {'j','o','h','n'};
char name2[] = {'j','o','h','n','\0'};
如果name1 和name2 之间存在差异,strlen 如何处理name1,因为它没有空字符?
结果是什么
printf("%d", name1[5] == '\0');
我预计它是 0,但得到了 1
【问题讨论】:
-
在这两种情况下,您都定义了一个
char数组。如果您希望编译器添加nul终止符,则需要使用字符串文字定义值,例如char name1[] = "john"; -
嗯,关于
strlen的一些讲座可能会表明strlen确实不适用于非空终止的字符串。