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

C語言指針全解:一級指針、二級指針、指針陣列與陣列指針關係圖解

     編輯:關於C語言

C語言指針全解:一級指針、二級指針、指針陣列與陣列指針關係圖解

指針 = 內存地址 (常量);指針變量 = 存放地址的變量。

一級指針

int a = 12;
int *p = &a;  // p 存 a 的地址
*p = 20;      // 解引用修改 a → a=20

二級指針 (指針的指針)

int a = 12;
int *p = &a;
int **pp = &p; // pp 存 p 的地址
**pp = 30;     // 經兩次解引用修改 a → a=30

指針陣列 vs 陣列指針

聲明名稱含義步長
int *p[3]指針陣列3 個 int*,每個指向一個 intsizeof(int*)
int (*p)[3]陣列指針1 個指針,指向含 3 個 int 的陣列3*sizeof(int)

經典用途

  • 指針陣列:存儲多字符串 (char *argv[])、二維不規則陣列行指針。
  • 陣列指針:函數參數接收二維陣列 (void f(int (*a)[COLS]))、遍歷二維陣列行。
  • 二級指針:修改一級指針值 (鏈表頭插入、動態分配輸出參數)。

內存圖解

int a=12;
int *p=&a;      p ──→ [a:12]
int **pp=&p;    pp ──→ [p:&a] ──→ [a:12]
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved