指標即記憶體位址,如門牌號。掌握指標 = 掌握記憶體直接操作權。
malloc → 堆積 (手動管理、跨函數共享)。int a = 3, b = 4; int *p1 = &a, *p2 = &b; int val = *p1; // 3 *p1 = 100; // 修改 a 為 100 val = *p2; // 4
& 取址,* 解參考 (間接存取)。p+1 跳過 sizeof(*p) 位元組)。void swap_val(int x, int y) { int t=x; x=y; y=t; } // 無效
void swap_ptr(int *x, int *y) { int t=*x; *x=*y; *y=t; } // 有效
int main() {
int x=3, y=4;
swap_ptr(&x, &y); // x=4, y=3
}
int a = 5;
int *p = &a;
int **pp = &p;
printf("%d\n", **pp); // 5
**pp 經兩層解參考取值。void alloc(int **pp, size_t n) { *pp = malloc(n); }int *p = NULL; 或 = &var;。free(p); p = NULL; 形成反射動作。指標是 C 語言靈魂。理解「位址即門牌號」、堆疊/堆積/全域三區模型、值/指標傳遞語義、多級指標輸出參數模式、野指標雙重防禦,並能手寫 swap、malloc 封裝、鏈表節點操作,即踏入系統級開發大門。