1. 程式人生 > >函式中二級指標接收一級指標的原理

函式中二級指標接收一級指標的原理

在資料結構中存在著大量的二級指標這體現了指標與指標之間的關係。

首先要知道一級指標只能用於存放普通變數的地址和一級指標地址。

二級指標只能存放指標的地址和二級指標地址。

同樣的三級 甚至是多級指標能存放的是他前一級指標的地址以及同級指標地址。

int a=5;

int *m=Null

int **p=null;

int **p=null;

m=&a;   /  /正確一級指標指向int變數m的記憶體

m=&p;    //錯誤一級指標不能指向二級指標的地址

p=&m;      //正確二級指標指向一級指標的地址

p=&a;     // 錯誤二級指標不能指向int 變數的地址

當我們要在一個函式中改變一個一級指標所儲存的值(地址)的時候我們需要用一個二級指標的形參(參量)來儲存實參(引數)的地址,這樣我們就能夠通過對二級指標解引用(二級指標所儲存的地址也就是一級指標的地址)這樣我們就能夠操作實參的地址來進行修改他的值;

如圖:

在呼叫函式的時候會把實參的地址賦值給二級指標變數p=&q=001;我們可以通過二級指標解引用來操作實參例如:

*P:地址001對應的內容我們可以吧一個地址賦值給*p。

*p=003;

對應記憶體模型為:

這樣我們就能通過二級指標來操作一級指標了,同樣我們還能通過二級指標來操作003地址所對應的內容(此時該內容是一個int行變數存放的值,int指標只能指向int變數(不考慮強制記憶體轉換))。

例如我們在函式中為結構體指標分配記憶體:

下面看看利用一級指標形參儲存一級指標實參地址情況

可以看出我們在get、函式中並沒有修改到mian中的S的值。

更多用法自行體會。。。。

轉載請標明原貼出處:https://blog.csdn.net/zj490044512