四大類型類別
C 語言數據類型分為:基本類型、構造類型、指針類型、空類型。

1. 基本類型
不可再分解的原子類型,直接映射硬件存儲單元:
- 整數族:
char、short、int、long、long long(含 signed/unsigned 變體)
- 浮點族:
float、double、long double
- 特殊:
_Bool (C99)、void(無類型)
特點:值不可再分解,大小固定(依實現),運行效率最高。
2. 構造類型
由基本類型或其他構造類型組合而成,值可分解為「成員」或「元素」:
| 類型 | 關鍵字 | 特點 |
| 數組 | [] | 同類型元素連續存儲,固定長度,下標訪問 |
| 結構體 | struct | 異構成員聚合,成員可為任意類型,支持嵌套 |
| 共用體 | union | 成員共享內存,同一時刻僅一個成員有效,節省空間 |
| 枚舉 | enum | 命名常量集合,本質為整型,增強可讀性 |
3. 指針類型
存儲內存地址的特殊類型,實現間接訪問:
- 聲明:
int *p; struct Node *next;
- 運算:
& 取址、* 解引用、-> 成員訪問
- 算術:指針 ± 整數(按類型大小步進)、指針 - 指針(得元素數)
- 特殊:
void* 通用指針、函數指針、NULL 空指針
核心價值:動態內存管理、數據結構鏈接、函數回調、多態基礎。
4. 空類型
void 表示「無值」:
- 函數返回類型:
void func() 無返回值
- 函數參數:
void func(void) 無參數
- 指針類型:
void* 通用地址持有者
- 表達式:
(void)expr 顯式丟棄值
類型修飾符
| 修飾符 | 作用 |
const | 只讀,編譯期常量傳播優化 |
volatile | 防止編譯器優化,硬件寄存器/多線程共享變量必用 |
restrict | (C99) 告知編譯器指針無別名,激進優化 |
_Atomic | (C11) 原子操作類型 |
類型定義與別名
typedef unsigned long uint32; // 類型別名
typedef struct { int x, y; } Point; // 結構體別名
sizeof 運算符
- 編譯期計算類型/表達式佔用字節數
sizeof(int)、sizeof arr、sizeof a + b
- 返回類型
size_t(無符號整數)
實踐建議
- 優先使用固定寬度類型(
int32_t、uint64_t 等 <stdint.h>)提升可移植性
- 結構體對齊:按成員大小降序排列減少填充字節
- 指針類型嚴格匹配,避免強制轉換導致未定義行為
- 善用
const 表達不可變意圖,啟用編譯器優化與檢查
- 上一篇文章: C 語言實現 itoa 與 atoi:整數與字符串相互轉換核心邏輯
- 下一篇文章: GLib 實戰:從零構建 21 點遊戲(一)——歡迎界面與隨機抽牌
Copyright ©
程式碼之家 All Rights Reserved