C 語言變量定義包含三維屬性:數據類型、存儲類型、作用域。本文聚焦數據類型分類體系,梳理四大類別與基本類型細節,建立類型系統全局認知。

| 類別 | 核心特徵 | 包含類型 |
|---|---|---|
| 基本類型 | 值不可再分解,自我說明 | 整型、浮點型、字符型、枚舉型 |
| 構造類型 | 由已定義類型構造,可分解為成員/元素 | 陣列、結構體、共用體 |
| 指針類型 | 值為內存地址,雖似整數但語意完全不同 | 各類型指針、void*、函數指針 |
| 空類型 | 無返回值函數的類型標記 | void |
int、short、long、long long (C99)signed / unsignedstdint.h):int32_t、uint64_t 等 —— 跨平台首選。float (單精度,通常 4B,~7 位有效數字)double (雙精度,通常 8B,~15 位)long double (擴展精度,平台相關)char (1 字節,實為小整數,存 ASCII/UTF-8 碼值)signed char / unsigned char (明確有符號性)wchar_t、char16_t、char32_t (C11)enum Color { RED, GREEN, BLUE }; // 常量 0,1,2
enum Color c = RED;
本質是整型常量集合,增強可讀性與類型檢查(C++ 強類型,C 弱類型)。
| 類型 | 關鍵字 | 記憶體佈局 | 典型用途 |
|---|---|---|---|
| 陣列 | type name[N] | 連續、同類型元素 | 批量同類數據 |
| 結構體 | struct | 連續、異類型成員 | 實體建模、記錄 |
| 共用體 | union | 重疊、同一地址 | 省記憶體、類型轉換 |
void*:通用指針,無類型資訊,需強轉後使用。int (*fp)(int, int),回調、狀態機核心工具。voidvoid func()。void func(void) (C 標準寫法)。void*。char* 做字節操作。int *p; // p 是指向 int 的指針
int *p[10]; // p 是陣列,元素為 int*
int (*p)[10]; // p 是指向 int[10] 的指針
int *func(); // func 返回 int*
int (*func)(); // func 是指向函數的指針,函數返回 int
讀法:從變量名出發,先右後左,遇括號優先處理括號內。
掌握四大類別定位、基本類型精確語意、構造/指針/空類型核心機制,能在變量聲明、函數簽名、記憶體操作、跨平台移植等環節做出正確類型決策,避免隱性轉換、對齊、溢出等經典陷阱。