为什么char
数组的其余部分没有打印出来?给出以下代码:
char charArray[10];
charArray[0] = 'a';
charArray[1] = 'b';
charArray[2] = 'c';
charArray[3] = 'd';
string str1 = charArray + string("string") ;
cout << str1;
输出:abcdstring
虽然这个:
char charArray[10];
charArray[0] = 'a';
charArray[1] = 'b';
charArray[2] = 'c';
string str1 = charArray + string("string") ;
cout << str1;
输出:abcstring
据我所知,其余数组索引中的值是单位化的,但仍然存在值。所以我期待随机字符显示在那里,但是我没有看到任何表示未初始化值的奇怪字符。
那么,为什么char
阵列的其余部分都不打印出来? (更多关于更多核心内容的更深入的答案是受欢迎的,并且非常感谢我希望将我的C ++知识扩展到专家的知识。)
答案 0 :(得分:3)
纯粹的运气。
当您使用字符数组时,
string str1 = charArray + string("string")
数组被解释为C风格的字符串。
C样式字符串以零字符值终止。在你的情况下,第一个未初始化的数组元素(即第一个实验中的charArray[4]
)恰好是纯粹的运气(假设这是一个本地数组)。 charArray[4]
中的偶然零值作为字符串的零终结符,因此您的charArray
恰好代表有效的C字符串"abcd"
。这正是你所看到的。
同样的事情发生在第二个实验中。