【发布时间】:2016-02-14 06:58:35
【问题描述】:
我是 C++ 新手,我正在编写这个程序:
#include <iostream>
#include <string>
using namespace std;
void main() {
char s[2] = { 'a', 'l' };
cout << s << endl;
}
当我运行这段代码时,我得到如下错误输出:
al╠╠╠╠╠╠H²O
为什么?因为当我学习 C++ 时,当我打印字符数组时,我会看到像字符串这样的数组元素。
【问题讨论】:
-
s不是以零结尾的。当传递给cout时,它会衰减为char*,一个C 风格的字符串。它需要以零结尾,因为没有附加长度信息。 -
╠ 在代码页 437 中为 0xCC,MSVC fills 0xCC to uninitialized memory to help debugging。这意味着您访问了未初始化的内存。你可以在这里找到关于 ╠ 和 0xCC 的大量问题
标签: c++ arrays visual-studio