當使用比元素更少的初始化器初始化自動結構體或陣列時,了解由C和C 標準。
C標準定義了自動變數的兩種初始化類型:完全初始化和不初始化。部分初始化是一個非標準術語,指的是僅初始化元素或成員的子集的情況。
C99 標準
在C99中,對於自動數組和結構體,如果初始化器比元素少,則其餘元素隱式初始化相同作為具有靜態儲存持續時間的物件。這意味著對於整數類型,它們被初始化為 0。
C 03 Standard
在 C 中,對於自動陣列和結構體,未初始化的成員是值初始化的。對於類別類型,這意味著呼叫預設建構函數。對於像 int 這樣的內建類型,它意味著零初始化。
在C 中,以單一值初始化自動整數數組,例如:
int arr[10] = {123,};
將依照C 的指定,將第一個元素初始化為123 ,並將所有剩餘元素初始化為0標準。
大多數主流編譯器都遵循 C 和 C 標準指定的部分初始化規則。但是,為了確保不同編譯器之間的相容性,建議明確初始化所有元素或成員。
以上是C 和 C 中如何處理部分初始化的自動結構和陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!