真正明白c語言二級指標

來源:互聯網
上載者:User

標籤:mem   tmp   多級   class   記憶體   title   字元   color   font   

指標是C語言的靈魂,我想對於一級指標大家應該都很熟悉,也經常用到:比如說對於字串的處理,函數參數的“值,結果傳遞”等,對於二級指標或者多級指標,我想理解起來也是比較容易的,比如二級指標就是指向指標的指標.....n級指標就是....

 

                                      p    *p   **p
                                      ---  ---  ----
                                      | |->| |->|  |
                                      ---  ---  |  |
                                                |  |
                                                ----

但是可能大家比較不容易理解的是,二級指標或者多級指標用在哪裡呢?怎麼使用呢?有沒有必要用呢?

    現在我就談談C指標的比較經常用到的地方:

我們都知道C語言中函數傳遞參數都是傳遞"值"的,如下:

void fun(void)

{

     int tmp = 0;

     change(tmp);

     printf("################ tmp = %d /n");

     return ;

}

 

void change(int tmp_t)

{

   tmp_t =1;

   return;

}

這個時候fun()中列印出來的tmp值還是0,因為我們傳遞的是“值”,如果你想在函數change()中修改這個tmp的值能在fun()中生效的話,那麼就需要用指標來傳遞了如下:

void fun(void)

{

     int tmp = 0;

     change(&tmp);

     printf("################ tmp = %d /n");

     return ;

}

 

void change(int *tmp_t)

{

   *tmp_t =1;

   return;

}

這個時候fun()中列印出來的tmp值就是1了,因為我們此時傳進來的是tmp的地址,所以我們在change()中tmp_t就是tmp的地址了,而對於*tmp_t的操作其實就是對tmp的操作了。

到這裡的時候我們可以試想一下,我們通過傳遞指標來達到修改一個值的目的,那麼當你需要修改一個指標的時候呢,這個時候我們就需要指標的指標了,如下:

int fun(void)

{

     int *buf ;

     int ret ;

     ret = mem_init(&buf);

     return ret;

}

 

int mem_init(int **buf_t)

{

  *buf_t = malloc(100);

  return 1;

}

 

通過上面我們可以發現,fun()函數通過調用men_init()函數來實現給buf分配記憶體空間的目的。首先buf是我們定義的一個指標,&buf則是指向buf的指標(二級指標),我們通過把&buf傳遞個men_init()函數,那麼此時二級指標buf_t=&buf了,所以說buf_t是指向buf的指標,那麼對於*buf_t的操作其實就是對buf的操作了,這樣fun()就可以通過men_init()來分配記憶體了。

(補充一點:對於定義的int **buf_t中,二級指標buf_t=&buf,指向為buf(還是一個指標),一級指標*buf_t=buf,指向為*buf,

值**buf_t= *buf)

對於n級指標的使用也是差不多這樣了

這是本人的一點理解,如果有不對,希望大家多多指導。

真正明白c語言二級指標

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.