指標是c語言的靈魂,我想對於一級指標大家應該都很熟悉,也經常用到:比如說對於字串的處理,函式引數的「值,結果傳遞」等,對於二級指標或者多級指標,我想理解起來也是比較容易的,比如二級指標就是指向指標的指標.....n級指標就是....
p *p **p
--- --- ----
| |->| |->| |
--- --- | |
| |
----
但是可能大家比較不容易理解的是,二級指標或者多級指標用在**呢?怎麼使用呢?有沒有必要用呢?
現在我就談談c指標的比較經常用到的地方:
我們都知道c語言中函式傳遞引數都是傳遞"值"的,如下:
void fun(void)
void change(int tmp_t)
這個時候fun()中列印出來的tmp值還是0,因為我們傳遞的是「值」,如果你想在函式change()中修改這個tmp的值能在fun()中生效的話,那麼就需要用指標來傳遞了如下:
void fun(void)
void change(int *tmp_t)
這個時候fun()中列印出來的tmp值就是1了,因為我們此時傳進來的是tmp的位址,所以我們在change()中tmp_t就是tmp的位址了,而對於*tmp_t的操作其實就是對tmp的操作了。
到這裡的時候我們可以試想一下,我們通過傳遞指標來達到修改乙個值的目的,那麼當你需要修改乙個指標的時候呢,這個時候我們就需要指標的指標了,如下:
int fun(void)
int mem_init(int **buf_t)
通過上面我們可以發現,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語言日記 二級指標
指標不僅僅可以指向普通的資料型別,例如 int double char等,也可以指向乙份指標型別的資料,例如 int double char。如果乙個指標指向另外乙個指標我們就稱他為二級指標 指向指標的指標 假設有乙個 int 型別的變數 a,p1是指向 a 的指標變數,p2 又是指向 p1 的指標...
C語言(關於二級指標)
在學資料結構鍊錶的初始化時碰到了二級指標,一開始十分陌生這種用法不知其意思,經過初步學習了解了其大意。一級指標與二級指標的意義 一級指標 int x 1 int a 定義了乙個指向int 型變數的指標a a x 1.a即指 x 的位址 2.a其實就是a指向的內容,a即為x,可以做左值也可以做右值,對...
C語言二級指標用途
首先,c語言中不存在引用,所以當你試圖改變乙個指標的值的時候必須使用二級指標。學習c語言的一定知道 c語言中引數傳入函式的過程為值傳遞,函式中修改的區域性變數的值對原來的實參並沒有影響。當使用一級指標作為引數傳入函式的過程為位址傳遞,函式的實際操作是對指標的操作,那就可以通過函式中對於實參指標的修改...