为什么不打印字符数组的单位化索引?
Why don't the unitialized indices of a char array print?
为什么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"
。这就是你所看到的。
同样的事情发生在第二个实验中。
相关文章:
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何在for循环中包含两个索引值的测试条件
- D3D11-将混合权重和索引传递到顶点着色器
- 将转换字符键入 int 以用作向量C++的索引
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 如何为圆环创建索引
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 查找字符在两个索引之间出现的次数
- Azure Kinect 使用正文索引映射裁剪正文
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 二进制数组中最大连续 1 的起始和结束索引,以 C++ 为单位
- 为什么不打印字符数组的单位化索引?