首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言入門

C 語言結構體初始化三大方法:C99 指定初始化器成標準首選

     編輯:C 語言入門

方法一:順序初始化(C89 相容)

struct Student { char grade; int score; const char *name; };
struct Student s1 = { 'A', 91, "Alan" };

缺點:順序必須與宣告一致,增減成員易出錯,可讀性差。

方法二:指定初始化器——推薦標準寫法(C99)

struct Student s2 = {
    .name = "YunYun",
    .grade = 'B',
    .score = 92,
};
  • 成員順序任意,缺失成員自動零初始化。
  • Linux 核心、現代嵌入式專案廣泛採用。
  • 支援巢狀結構:.addr = { .city = "Taipei", .zip = 100 }。

方法三:GNU 擴充冒號語法(非標準)

struct Student s3 = {
    grade: 'C',
    score: 93,
    name: "Wood",
};

僅 GCC/Clang 支援,不可移植,不建議新代碼使用。

結構體陣列初始化

struct Student class[2] = {
    { .grade = 'D', .score = 94 },
    { .grade = 'E', .score = 95, .name = "Xxx" },
};

內層大括號不可省略,每個元素獨立初始化。

最佳實踐總結

  1. 新專案統一使用 C99 指定初始化器(點號語法)。
  2. 嚴格避免順序初始化,除非極簡單且凍結結構定義。
  3. 編譯器旗標 -std=c99 或 -std=c11 確保支援。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved