編譯器如何填充值char array[100] = {0};?它背后的魔力是什么?我想知道內部編譯器如何初始化。
3 回答

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

慕桂英4014372
TA貢獻1871條經驗 獲得超13個贊
實現取決于編譯器開發人員。
如果您的問題是“這種聲明會發生什么” - 編譯器會將第一個數組元素設置為您提供的值(0),其他所有數組元素將設置為零,因為它是省略的數組元素的默認值。
- 3 回答
- 0 關注
- 2135 瀏覽
添加回答
舉報
0/150
提交
取消