| 分類 | 關鍵字/構造 | 說明 |
|---|---|---|
| 基本類型 | 整數:char/short/int/long (signed/unsigned) 浮點:float/double/long double | 算術類型,直接映射硬件 |
| 枚舉類型 | enum Type { VAL1, VAL2... } | 命名整數常量集,增強可讀性 |
| Void 類型 | void | 僅用於函數返回/參數,不可定義變量 |
| 派生類型 | 指針、數組、結構體、聯合體、函數類型 | 由基本類型組合構造 |
關鍵區別:結構體成員併存(佔用總大小),聯合體成員互斥(佔用最大成員大小),共用內存實現類型懲罰或節省空間。
() [] -> . ++ -- (高) → * / % + - << >> < <= > >= == != & ^ | && || ?: = += -= *= /= %= &= ^= |= <<= >>= (低)// 分支
if (cond) { } else if (cond) { } else { }
switch (expr) { case const: ... default: }
// 循環
while (cond) { }
do { } while (cond);
for (init; cond; step) { }
break; continue; // 循環控制
#include #define #undef
#ifdef #ifndef #if #elif #else #endif
#error #pragma
| 頭文件 | 核心功能 | 常用函數/宏 |
|---|---|---|
| <stdio.h> | 標準輸入輸出 | fopen/fclose/fread/fwrite/printf/scanf |
| <stdlib.h> | 通用工具 | malloc/free/atoi/atof/exit/abort/getenv |
| <string.h> | 字符串/內存操作 | strcpy/strcat/strlen/memcpy/memcmp |
| <math.h> | 數學運算 | sin/cos/sqrt/pow/fabs/exp/log |
| <time.h> | 時間日期 | time/localtime/strftime/clock |
| <assert.h> | 斷言調試 | assert(expr) |
| <stdarg.h> | 可變參數 | va_start/va_arg/va_end |
Windows (MSVC):
time.inl 內聯函數 → _time32() → GetSystemTimeAsFileTime() (系統調用) → 換算為 Unix 時間戳
Linux (glibc):
time() → gettimeofday() (系統調用) → 返回 tv_sec
核心洞察:標準庫是抽象層,屏蔽平台差異;編譯器廠商負責用系統調用實現標準庫,應用開發者只需依賴標準接口。
mainCRTStartup → main)應用代碼
│ 調用標準庫 API (printf, malloc, fopen)
▼
標準庫實現 (glibc / MSVC CRT)
│ 封裝系統調用
▼
操作系統內核
│ 硬件抽象層 (HAL)
▼
物理硬件 (CPU/內存/磁盤/網卡)
標準庫消除平台差異,提供統一編程體驗;系統調用是 OS 提供的特權接口,標準庫實現負責適配特定 OS 的系統調用。
#pragma comment(lib, ...) 指定鏈接庫LoadLibrary/GetProcAddress (Windows) / dlopen/dlsym (Linux) 實現插件架構extern / extern "C" / __declspec(dllimport)#pragma comment(linker, "/entry:main2") 修改程序入口這份筆記構建了從語法基礎到系統底層的完整知識脈絡,建議配合《C 專家編程》、《Windows 核心編程》、《Linux/UNIX 系統編程手冊》深化專項學習。