为什么不打印字符数组的单位化索引?

Why don't the unitialized indices of a char array print?

本文关键字:索引 单位 打印 字符 数组 为什么不      更新时间:2023-10-16

为什么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++知识的专家。)

纯属运气。

当您使用字符数组时,此上下文

string str1 = charArray + string("string")

数组被解释为c风格的字符串。

c风格字符串以0字符值结束。在你的情况下,第一个未初始化的数组元素(即charArray[4]在第一个实验)恰好是零纯粹的运气(假设这是一个局部数组)。charArray[4]中的意外零作为字符串的零终止符,因此您的charArray恰好代表有效的c字符串"abcd"。这就是你所看到的。

同样的事情发生在第二个实验中。