帶大括號的陣列初始化:揭秘編譯器的行為
程式設計中,用大括號將陣列賦值,如array[100 ] = {0},引發了有關如何在內部初始化值的問題。讓我們深入研究這個符號背後的魔法。
魔法還是編譯器邏輯?
與普遍看法相反,其中不涉及任何魔法。此程式碼的行為受程式語言規格控制:
C 規格(第6.7.8.21 節): 對於未指定的陣列元素,指標初始化為NULL,算術類型(包括char )設定為零。
C 規格(部分8.5.1.7): 未指定的陣列元素是聚合初始化的。
C 中的空初始值設定項列表: C 支援空初始值設定項列表,如array[100] = {};,其中聚合-初始化數組的所有元素。
編譯器產生程式碼: 通常,編譯器會產生將陣列的每個元素設定為指定值的程式碼。但是,根據編譯器和最佳化設置,程式碼可能會有所不同。
要進一步了解編譯器的行為,請參閱相關問題中為空初始值設定項目清單產生的彙編程式碼:「Strange assembly from array 0 -初始化。」
以上是C 和 C 中如何用大括號初始化陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!