- 多級(jí)指針的作用
如果要保存某個(gè)指針的地址, 你就會(huì)需要用到多級(jí)指針.
例如:
普通變量的地址需要用一級(jí)指針來保存
一級(jí)指針的地址需要用二級(jí)指針來保存
二級(jí)指針的地址需要用三級(jí)指針來保存
三級(jí)指針的地址需要用四級(jí)指針來保存......
示范代碼:
Line1 int num = 1;
Line2 int *p = &num
Line3 int *p1 = p;
Line4 int **p2 = &p1;
Line5 int ***p3 = &p2;
但是, 在初次接觸多級(jí)指針時(shí), 很多人也許會(huì)感到迷惑:
- 指針本身不就可以用來保存的地址的嗎?
- 為什么指針自己的地址卻不能用普通指針(一級(jí)指針)來保存? 非要用多級(jí)指針?
事實(shí)上, 在編程中, 如果你將一個(gè)二級(jí)指針的地址賦值給一個(gè)普通指針, 程序是不會(huì)報(bào)錯(cuò)的, 只會(huì)報(bào)一個(gè)警告: 警告你二級(jí)指針的地址應(yīng)該賦值給三級(jí)指針.
需要注意的是, 這只是一個(gè)警告, 而不是一個(gè)語(yǔ)法錯(cuò)誤, 那么這說明了什么呢?
說明多級(jí)指針的本質(zhì), 其實(shí)只是C語(yǔ)言中的一個(gè)書寫規(guī)范!
事實(shí)上任何指針都可以保存任何地址(一級(jí)指針也可以保存四級(jí)指針的地址, 四級(jí)指針也可以保存一級(jí)指針的地址).
但這樣寫的話, 閱讀性就會(huì)變得很差! 所以為了保證閱讀性, 就定義了多級(jí)指針這樣的書寫規(guī)范.
很多初學(xué)者在推理多級(jí)指針保存的值的時(shí)候會(huì)繞不出來, 其實(shí)這里面都是有規(guī)律的.
-
關(guān)于多級(jí)指針的存儲(chǔ)的值的推理過程
我們還以上面的示范代碼為例:
Line1 int num = 1;
Line2 int *p = &num
Line3 int *p1 = p;
Line4 int **p2 = &p1;
Line5 int ***p3 = &p2;
運(yùn)行示例: