指標的指標:如果乙個指標變數存放的是另乙個指標變數的位址,則稱這個指標變數為指向指標的指標變數。
假如定義了乙個二級指標:
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,然後定義乙個一...