區別如下,const所指向的對象,或者修飾對象,是否可變:
const int*p; // p 可變,p 指向的對象不可變
int const*p; // p 可變,p 指向的對象不可變
int *const p; // p 不可變,p指向的對象可變
const int *constp; //指針p 和p 指向的對象都不可變
如果你經常搞混的話,你可以嘗試一下:
先忽略類型名(編譯器解析的時候也是忽略類型名),
我們看const 離哪個近。“近水樓臺先得月”,離誰近就修飾誰。
const int *p; //const 修飾*p,p 是指針,*p 是指針指向的對象,不可變
int const *p; //const修飾*p,p 是指針,*p是指針指向的對象,不可變
int *const p; //const修飾p,p 不可變,p 指向的對象可變
const int *constp; //前一個const 修飾*p,后一個const 修飾p,指針p 和p 指向的對象都不可變
世界是在變的,但是一些東西是不變的。抓住某些東西,或許你可以改變Something!!
|