【发布时间】:2014-05-14 17:07:15
【问题描述】:
为什么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++ 知识扩展到专家的水平。)
【问题讨论】:
-
因为未定义的行为?该数组的元素最初可能为零(通过“随机运气”),这意味着它就像一个以 null 结尾的字符串“abc”或“abcd”。