C中的指標的指標

來源:互聯網
上載者:User

標籤:http   os   檔案   2014   io   re   

    指標儲存的是記憶體位址,那麼當代碼執行

int *iptr;int a;iptr = &a;

    它表示iptr指向了a所在的記憶體位址。那麼若執行

*iptr = 10;printf("a = %d\n",a);

    那麼a的值為多少呢?

    可以簡單地寫一個程式 cpoint1.c

#include<stdio.h>int main(){int a;int *iptr;iptr = &a;*iptr = 10;printf("a = %d\n",a);}

    在終端上利用gcc編譯

#gcc cpoint1.c

    執行後產生a.out執行檔案

./a.out

    會看到列印的是 a = 10

    這裡可理解為指標iptr指向了a所在的記憶體位址,那麼當執行 

*iptr = 10;

    時,實際就是將10存到a所在的記憶體位址中。

    現在瞭解了指標的基本概念,那麼什麼是指標的指標呢?

    首先,假設小明、小華、小新他們三個是朋友,但是小明只有小華的電話號碼,而小華只有小新的電話號碼。那麼如果小明想找小新的話,就得先聯絡小華,通過小華聯絡小新。

    如果將小華和小新都當做一個記憶體的地址,那麼小明指向小華,可理解為一級指標,小華再指向小新,這樣就成了指標的指標。

int *iptr;int a;int **jptr;

    上面已經知道了

iptr = &a;

    指的是將a所在的記憶體位址賦值給iptr

    那麼jptr這個指標又該如何賦值。剛才小明小華小新的例子,可以這樣解剖

int **小明;int *小華;int 小新;

    首先小明要得到小新的地址,那麼要通過小華。所以有

小華 = &小新;

    這樣小華就指向了小新,得到小新的地址,然後再將小華的地址轉給小明,這樣就可以完成小明得到小新的地址

小明 = &小華;

    接下來看下面的程式 cpoint2.c

#include<stdio.h>int main(){int a;int *iptr;int **jptr;iptr = &a;jptr = &iptr;a = 10;printf("jptr = %d\n",**jptr);}
#gcc cpoint2.c

    編譯執行的結果為:

jptr = 10

    看明白了嗎?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.