在所有的計算機教材中,const都被翻譯成“常量”,但是我認為這樣的翻譯是會給初學者帶來一定誤解的,而
最簡單理解方法是把所有const翻譯成“只讀”
比如一個經典的問題:
double
pi
=
3。14
;
const
double
*
ptr
=
&
pi
;
double
const
*
ptr1
=
&
pi
;
//等效於line 2
double
*
const
ptr2
=
&
pi
;
請問哪個是不能透過指標改變所指定的物件的值?
哪個是不能改變指標所指的物件?
看中文是雲裡霧裡如同繞口令,而看英文中的原意描述就很簡單:(右側是一般中文教科書的翻譯)
pointer to const:指標常量
const pointer:常量指標
簡單理解:
*const(即*在const之前):距離const最近的是那個指標ptr(見上面程式碼第四行),也就是“ptr是隻讀的”,所以恰當的描述就應該是const pointer
const *p(即*在const之後):距離const最近的是*p,也就是“這個指標p的解引用的結果是隻讀的”,所以不能夠透過指標修改這個指標的解引用,所以恰當的描述是pointer to const
隨便寫寫,拋塊磚也不想著引玉了,你們想要真正瞭解也不會來知乎看我這篇文章(逃: