0
虽然我的数组只有大小3,并且我已经为每个元素指定了一个char,但仍然会自动添加NULL Terminator。是什么导致在我的代码中添加NULL Terminator?C - 为什么在将单个字符分配给数组时,会自动添加字符串终止符?
int main(void)
{
char s[3];
s[0] = 'f';
s[1] = 'o';
s[2] = 'o';
int i = 0;
while (s[i] != '\0')
printf("%c", s[i++]);
printf("\n");
if (s[i] == '\0')
printf("Null Terminator Added\n");
}
这只是一个不错的行为。在你的数组后面会出现一个0 *,但那只是运气不好。 – 2014-11-22 19:21:29
“什么导致NULL代码被添加到我的代码中” - 很可能是'i = 0'(尽管我期望它们之间有1个字节的间隔)。如果你想验证''i',你可以检查'&i',但是一般情况下,编译器会在's'之后立即分配'i'。这只是一个运气问题,至于在你的函数被调用的地方(在你的具体例子中它是'main',所以你应该在每次执行时都会得到相同的结果)执行时的堆栈内容。 – 2014-11-22 19:27:55
如果你对C相对比较陌生,并且在数组和指针的工作方式方面存在问题,下面是一个帮助可视化差异的答案:http://stackoverflow.com/questions/27052988/what-is-the-difference-between -different-kinds-of-pointer-in-c/27054973#27054973 – technosaurus 2014-11-22 20:03:46