这是我的 C 程序及其输出的屏幕截图,这是我在一本书中遇到的问题。
如您所见,我的代码中有一个“for”循环。所以我所做的是,我改变了循环初始化的值
for(i=6;s1[i]!='\0';i++);
现在输出再次
矩阵 尺码 6
我一次又一次地改变初始化值,然后获取“i”的输出值,如下
初始化 |||| (i) 的输出值
6 -> 6
7 -> 11
8 -> 11
9 -> 11
10 -> 11
11 -> 11
12 -> 20
我的问题
为什么它没有得到我的值 i = 循环的初始化值, 每当我将循环的初始化值>输入字符串的大小(即在本例中为“矩阵”)时?
因为 6 之后的所有字符数组元素都应该为 null,不是吗?
最佳答案
because all the char-array element after 6 should be null, shouldn't they ?
不,它们不必是\0
。它们可以持有任何值(value)。您只需循环直到找到恰好存在的下一个0
。当你实例化一个内置类型的自动存储数组时,如下所示:
char s[20];
没有对元素执行初始化。它们具有不确定的值。从它们中读取甚至是未定义的行为。您可以像这样强制对元素进行零初始化:
char s[20] = {};
关于c++ - 无法理解 C 中字符串和循环的这种意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20211036/