二級指標和指標引用函式傳參(C )

2021-10-24 13:50:31 字數 1358 閱讀 8022

在函式的使用過程中,我們都明白傳值和傳引用會使實參的值發生改變。那麼能夠通過傳指標改變指標所指向的位址嗎?

在解決這個問題之前,也許我們應該先了解指標非常容易混淆的三個屬性:

①.指標變數位址(&p)

②.指標變數指向的位址(p,儲存資料的位址)

③.指標變數指向的位址的值(*p)

當我們將指標變數與其它變數比較之後就會發現,指標變數同其它變數是相似的,只是多了最後一種操作。比如乙個int型別的變數,int x=5;&x取出儲存5這個資料的位址,同樣,&p也是儲存指標的位址,p就是這個位址裡面儲存的值,也就是指向的位址。只是與其它變數不同的是,它除了這兩種操作之外,還有乙個解引用操作符(*p)去獲取指標變數指向的位址裡面儲存的值。

一.指標引用

void make(int *pp)

int main()

執行結果如下:當我們修改傳入引數為指標的引用的時候就可以修改指標變數所指向的位址了,可以看見,傳入指標引用可以修改指標變數的值(p)和指向的值(*p)。

二.二級指標

指向指標的指標變數稱為二級指標。

如果pp是乙個二級指標,那麼有如下屬性:

①.二級指標的位址(&pp)

②.二級指標的位址儲存的位址(pp)

③.二級指標的位址儲存的位址,該位址裡面儲存的位址(*pp)

④.二級指標的位址儲存的位址,該位址裡面儲存的位址裡面的資料(**pp)

除了上面傳入指標引用改變一級指標指向的位址以外,我們還可以通過傳入乙個二級指標去修改它對應的一級指標指向的位址,同樣達到了修改指標變數的效果。二級指標的指向的位址儲存的值就是一級指標指向的位址。對一級指標變數解引用得到的是指標指向的位址儲存的資料,二級指標變數解引用得到的也是該二級指標指向的位址儲存的位址值。

二級指標和指標引用函式傳參(C )

在函式的使用過程中,我們都明白傳值和傳引用會使實參的值發生改變。那麼能夠通過傳指標改變指標所指向的位址嗎?在解決這個問題之前,也許我們應該先了解指標非常容易混淆的三個屬性 指標變數位址 p 指標變數指向的位址 p,儲存資料的位址 指標變數指向的位址的值 p 當我們將指標變數與其它變數比較之後就會發現...

二級指標傳參的解釋和函式指標的理解

根據 c語言深度解析 二級指標 void getmemory char p,intnum int main 注意main函式傳參是傳的 str,傳入到函式的是str的位址,是乙個值,不是str的拷貝,而 p就相當於 str 也就是str本身,所以經過這個函式,str的值被改變了,那麼 str指向的就...

指標陣列陣列傳參 指標引用傳參

指標和陣列作為引數傳入函式時,傳入的是位址,即指向變數的位址和陣列的首位址,可以在函式中改變指標或陣列的值,但本質上它們還是值的傳遞 區別於變數的值傳遞的是 變數值傳遞不會改變實參原來的值。我們無法對指標和陣列的位址進行操作 如 位址賦值,分配記憶體等 要進行位址操作需要使用指標引用或指標的指標。示...