3 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
這不是魔術(shù)。
C規(guī)范的第6.7.8.21節(jié)(C規(guī)范的在線草案)中描述了C中此代碼的行為:對(duì)于沒(méi)有指定值的元素,編譯器將指針初始化為NULL,將算術(shù)類型初始化為零(并遞歸地將其應(yīng)用于聚合)。
C ++中的代碼行為在C ++規(guī)范的8.5.1.7節(jié)(C ++規(guī)范的在線草案)中描述:編譯器聚合初始化沒(méi)有指定值的元素。
另請(qǐng)注意,在C ++(但不是C)中,您可以使用空的初始化列表,從而使編譯器聚合初始化數(shù)組的所有元素:
char array[100] = {};
至于編譯器在執(zhí)行此操作時(shí)可能生成的代碼類型,請(qǐng)查看以下問(wèn)題:數(shù)組0初始化的奇怪組件

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
實(shí)現(xiàn)取決于編譯器開(kāi)發(fā)人員。
如果您的問(wèn)題是“這種聲明會(huì)發(fā)生什么” - 編譯器會(huì)將第一個(gè)數(shù)組元素設(shè)置為您提供的值(0),其他所有數(shù)組元素將設(shè)置為零,因?yàn)樗鞘÷缘臄?shù)組元素的默認(rèn)值。
- 3 回答
- 0 關(guān)注
- 2113 瀏覽
添加回答
舉報(bào)