char数组在声明时初始化?

时间:2016-05-27 22:27:37

标签: c++ arrays char initialization

MWE是

#include <iostream>
using namespace std;

int main(void)
{
    char array[255];
    cout << array[0] << "\n";
    cout << array[1] << "\n";
    cout << array[2] << "\n";
    cout << array[200] << "\n";
    cout << array[253] << "\n";
    cout << array[255] << "\n";
    return 0;
}

输出

\330
^M
`
\215
^@
^@

虽然我不知道为什么输出会创建这个。但我可以说 “数组在声明时初始化。”?

2 个答案:

答案 0 :(得分:3)

您的数组未初始化,因此它只有未定义的值。您可以先初始化数组:

char array[255] = {};

但这只是填充了0&#39。另请注意,您无法在此处访问索引255:

cout << array[255] << "\n";

这将尝试访问数组的第256个元素,而您只有255个。

答案 1 :(得分:0)

c ++中没有隐式初始化。 在您的情况下,编译器在堆栈上仅分配255个字节。实际内容是任意的。