2017-10-15 76 views
-2

我已經學習在C++中使用的陣列空終止子和我已經困惑,爲什麼初始化數組的一個空終止不起作用一樣它初始化爲0。爲什麼將數組初始化爲空終止符不會導致內存中的每個節都爲「空」?

例如:

char setOfCharacters [15] = {'\0'}; 

相比

char setOfCharacters [15] = {0}; 

我知道初始化setOfCharacters爲0意味着,在陣列的每個存儲單元保存一個0與開始了。但是爲什麼當你將一個數組初始化爲一個空終止符時不會有相同的工作?

+2

「*但是爲什麼當你初始化一個數組到空終止符的時候是不一樣的?*」誰說它沒有? –

+0

然後,兩者應該表現相同。你需要一個[mcve]。 – juanchopanza

+1

困惑。在這種情況下,''\ 0''和'0'應該導致相同的結果。演示:https://ideone.com/g5h4DF – user4581301

回答

1

事實上該初始化

char setOfCharacters [15] = {0}; 

相當於

炭setOfCharacters [15] = {(炭)0};

將0設置爲char類型的對象也可以使用字符文字'\0'寫入。

而且都初始化

char setOfCharacters [15] = {'\0'}; 

char setOfCharacters [15] = {0}; 

結果沒有明確初始化該陣列的所有其他元素將被初始化爲零。

要考慮到比較

'\0' == 0 

總會讓步true。此比較中的字符常量被提升爲int(例如,在C中,字符常量的定義類型爲int)。

+0

@Tas我已更新刪除單詞「也」的短語,使其更清楚。 –

相關問題