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

C 語言二級指標:指向指標的指標完整解析

     編輯:C 語言基礎

指標可指向一般資料(int、double...),也可指向另一個指標(int*、double*...)。指向指標的指標稱為二級指標或指向指標的指標。

多級指標定義鏈

int a = 100;
int *p1 = &a;      // 一級指標
int **p2 = &p1;    // 二級指標
int ***p3 = &p2;   // 三級指標
int ****p4 = &p3;  // 四級指標

每增加一級,定義多一顆星號。實務上常用一、二級,高級極少用。

多重解引用取值規則

  • 一級指標:*p1
  • 二級指標:**p2
  • 三級指標:***p3
  • 以此類推...

完整驗證範例

#include <stdio.h>
int main() {
    int a = 100;
    int *p1 = &a;
    int **p2 = &p1;
    int ***p3 = &p2;

    printf("%d, %d, %d, %d\n", a, *p1, **p2, ***p3); // 100, 100, 100, 100
    printf("&p2=%#X, p3=%#X\n", &p2, p3);
    printf("&p1=%#X, p2=%#X, *p3=%#X\n", &p1, p2, *p3);
    printf("&a=%#X, p1=%#X, *p2=%#X, **p3=%#X\n", &a, p1, *p2, **p3);
    return 0;
}

輸出:

100, 100, 100, 100
&p2=0X28FF3C, p3=0X28FF3C
&p1=0X28FF40, p2=0X28FF40, *p3=0X28FF40
&a=0X28FF44, p1=0X28FF44, *p2=0X28FF44, **p3=0X28FF44

三級指標 ***p3 逐層解析

***p3 ≡ *(*(*p3)):

  1. *p3 → 取得 p2 的值(即 p1 地址)
  2. *(*p3) → 取得 p1 的值(即 a 地址)
  3. *(*(*p3)) → 取得 a 的值(100)

記憶體關係圖示

假設地址:a=0X00A0、p1=0X1000、p2=0X2000、p3=0X3000,形成層層指向鏈結。

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