C語言學習筆記 指標 多級指標

2021-09-01 13:29:09 字數 1472 閱讀 3331

指標的指標:如果乙個指標變數存放的是另乙個指標變數的位址,則稱這個指標變數為指向指標的指標變數。

假如定義了乙個二級指標:

int

**q;

對於上述例子的二級指標,我們可以把int **q拆分成兩部分看:,即int*(*q),後面(*q)中的*表示 q 是乙個指標變數,前面的int*表示指標變數 q 只能存放int*型變數的位址。同理不管多少級的指標變數,它都是乙個指標變數,指標變數就是乙個*,其餘的*表示的是這個指標變數只能存放什麼型別變數的位址。

下面來舉乙個例子。假如定義了乙個指標變數 p 指向乙個 int 型變數:

int i =10;

int*p =

&i;int

**q =

&p;

int*p表示p指向的是int型變數,裡面只能存放int型變數的位址。p是指標變數,它的位址也可以定義乙個指標變數存放它:int **q = &p;因為指標變數p的基型別為 int 型,所以&p的基型別為int*型 。所以如果要定義乙個能指向int*型變數的指標變數,有兩個要求:首先它要是指標變數,即乙個*;其次,該指標變數指向的是int*型的資料,或者說存放的是int*型變數的位址,所以就是int**

兩個*表示二級指標,就是指標的指標。二級指標需要兩個*才能指向最終的記憶體單元,即**q==i。變數q中存放變數p的位址,又因為*q=p;即,存放的也是*q的位址,因為**q=*p=i,即變數*q或變數p中存放變數**q的位址,變數**q中存放i的內容,即 10。或者說:q指向*q*q指向**q**q中存放i的內容,即 10。

參考文獻:

C語言學習筆記 指向指標的指標 多級指標

在指向指標的指標這一塊,從大一開c語言課的時候就沒弄明白,現在快畢業了,重新拾起c語言,多少是明白了一點 在這塊的介紹上,文字描述太難懂太繞了,咱直接上例子,看 debug一下,看看記憶體和位址的分配情況就差不多能明白了 例項程式 程式輸出 the value of myvar is 12.the ...

C語言學習筆記 指標

若觸過組合語言,那麼理解學習c語言中指標就很簡單了。指標,在彙編裡面的表現形式,無非就是定址,直接定址和間接定址。先來學習下,c語言中的4大類資料型別 基本型別 int,long,float,char 構造型別 陣列,結構體 struct,聯合體 union,列舉型別 enum 指標型別 int l...

C語言學習筆記 指標

c語言要玩的好,指標是核心,但是指標在學習的時候看教程往往感覺一看就明白,但是實際用的時候一用就錯,而且還不知道錯在哪。為了更加深刻的了解指標,將學習過程記錄下來,依次加深對指標的理解。先看看一段測試 void fun void int main void 定義乙個變數a,值為100,然後定義乙個一...