这可能看起来微不足道,但我是编程新手。对于字符串,我们应该为空字符保留一个空间,因此大小为 10 的字符串只会为我们提供 9 个内存位置可供使用。我想知道当我们将字母单独输入数组时是否会发生同样的情况。有人可以解释一下吗?
最佳答案
在 C 语言中,字符串基本上是一个数组。并且该数组的大小必须始终足够大以容纳终止空字符。所以如果我有
char array[10];
我能做到
array[0] = 'H';
或
array[5] = 'x';
但我最好停止在 array[8]
中输入字符,这样我就可以做到
array[9] = '\0';
最后。
底线:我可以做到这一点:
array[0] = 'C';
array[1] = 'a';
array[2] = 't';
array[3] = '\0';
printf("%s\n", array);
或者这个:
array[0] = 'S';
array[1] = 'p';
array[2] = 'a';
array[3] = 'g';
array[4] = 'h';
array[5] = 'e';
array[6] = 't';
array[7] = 't';
array[8] = 'i';
array[9] = '\0';
printf("%s\n", array);
但不是这个:
array[0] = 'H';
array[1] = 'e';
array[2] = 'l';
array[3] = 'i';
array[4] = 'c';
array[5] = 'o';
array[6] = 'p';
array[7] = 't';
array[8] = 'e';
array[9] = 'r';
array[10] = '\0'; /* XXX WRONG */
关于C-GCC 编译器中的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36043856/