首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言指標完整讀法指南:從基本機制到陣列/函數/多級指標的萬能解讀口訣

     編輯:關於C語言

基本機制:指標 = 位址值,指標變數本身佔 4/8 位元組

int a = 10;
int *p = &a;  // p 儲存 a 的位址
// 記憶體兩塊:p 自身位址 (&p)、a 的位址 (&a == p)

萬能解讀法:由右向左讀

  1. 找到變數名。
  2. 向右讀:遇到 () → 函數,[] → 陣列。
  3. 向左讀:遇到 * → 指向,const → 常量,型別 → 基礎型別。

範例

int *(*fp)(int, char*);  
// fp 是 → 指標 → 指向函數 (int, char*) → 回傳 int*

陣列三重身分:a、&a、&a[0]

表達式型別值+1 後指向
aint*首元素位址第二元素
&a[0]int*首元素位址第二元素
&aint(*)[3]整個陣列位址下一個陣列 (跨越整個陣列大小)

關鍵:a+1 == &a[0]+1,&a+1 跨越整個陣列。

六大易混淆配對:中文語法「前修飾、後主語」秒懂

術語主語宣告範例
指標陣列陣列int *arr[10];
陣列指標指標int (*arr)[10];
函數指標指標int (*fp)(int);
指標函數函數int *fp(int);
指標常量常量 (指標本身不可改)int * const p;
常量指標指標 (指向常量)const int *p;

野指標兩大成因與防禦

  1. 未初始化:定義即初始化 int *p = NULL; 或 = &var;。
  2. free 後未置 NULL:free(p); p = NULL; 形成肌肉記憶。

總結

掌握「由右向左讀」萬能解讀法、「前修飾後主語」中文口訣、陣列三重身分區別、野指標雙重防禦,即可破解任意複雜指標宣告,編寫型別安全、意圖清晰的 C 程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved