首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C語言 typedef 定義結構體數組:cla[40] 到底是個什麼?

     編輯:程式設計綜合問答

代碼拆解

typedef struct students {
    long   code;
    char  *name;
    float  score[3];
    float  sum;
} cla[40];

這行代碼做了兩件事:

  1. 定義匿名結構體類型 struct students。
  2. 同時 定義一個 類型別名 cla,它代表 「包含 40 個 struct students 的數組」。

等價寫法(更清晰)

// 1. 先定義結構體類型
typedef struct students {
    long   code;
    char  *name;
    float  score[3];
    float  sum;
} Student;

// 2. 再定義數組類型別名(可選)
typedef Student ClassArray[40];  // ClassArray 代表 Student[40]

// 使用
ClassArray class1;   // 等價於 Student class1[40];
Student  class2[40]; // 直接定義數組,更直觀

為何原寫法不推薦?

  • 可讀性極差:類型與變量定義混在一起,維護者難以一眼看出是類型還是變量。
  • 靈活性低:硬編碼 40,擴容需改 typedef,波及所有使用處。
  • 調試符號混亂:編譯器生成的類型名可能變成 cla 而非 Student[40]。

最佳實踐

  1. 結構體用 typedef struct { ... } Student; 定義單個對象類型。
  2. 需要固定大小集合時,直接 Student classList[40]; 或 vector(C++)。
  3. 若必須別名數組類型,單獨 typedef Student ClassArray[40]; 並加註釋。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved