在所有的計算機教材中,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

隨便寫寫,拋塊磚也不想著引玉了,你們想要真正瞭解也不會來知乎看我這篇文章(逃: