簡體   English   中英

聲明時初始化了char數組?

[英]char array initialized at the time of declaration?

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
^@
^@

雖然我不知道為什么輸出會創建這個。 但是我可以說“在聲明時初始化數組”嗎?

您的數組未初始化,因此它只有未定義的值。 您可以先初始化數組:

char array[255] = {};

但這只是用0填充。 另外,請注意,您不能在此處訪問索引255:

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

這將嘗試訪問數組的第256個元素,而您只有255個。

C ++中沒有隱式初始化。 在您的情況下,編譯器僅在堆棧上分配255個字節。 實際內容是任意的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM