整理自《C Primer Plus》核心基礎章節:典型程序結構、預處理機制、頭文件與庫的關係、關鍵字保留字,適合初學者建立正確心智模型。
典型 C 程序結構
#include <stdio.h> // 預處理指令
int main(void) { // 主函數(程序入口)
// 函數體:語句序列
printf("Hello, World!\n");
return 0;
}
組成要素
- 一個或多個函數,必須有
main
- 函數 = 函數頭 + 函數體(花括號包裹)
- 語句以分號結束
- 函數名後跟圓括號(可空)
預處理器與 #include
#include <stdio.h>
#include 是預處理指令,非 C 語句
- 預處理階段:文本替換、文件包含、巨集展開
stdio.h:標準輸入輸出頭文件,含 printf 等函數聲明
- 頭文件只含聲明/巨集,**實現代碼在預編譯庫文件中**
- 鏈接器負責找到庫代碼並合併
頭文件 vs 庫文件
| 頭文件 (.h) | 庫文件 (.lib/.a/.so/.dll) |
| 函數原型聲明 | 函數實現機器碼 |
| 巨集/常量定義 | 編譯後二進制 |
| 類型定義 | 不含源碼 |
| 編譯期需要 | 鏈接期需要 |
關鍵字與保留標識符
- 關鍵字 = C 語言詞彙,不可作變量名
- 類型關鍵字:
int、float、double、char、void...
- 控制流:
if、else、switch、case、for、while、do...
- 其他:
return、sizeof、struct、union、enum、typedef、const、static、extern...
- 嘗試用關鍵字做變量名 → 編譯器語法錯誤
庫代碼實現位置示意
源碼 main.c
↓ 預處理 (展開 #include, #define)
擴展源碼
↓ 編譯
目標文件 main.o
↓ 鏈接 (合併 libc 等庫)
可執行文件 a.out
常見誤區澄清