天天看點

const* 和 *const

​const*​

​​和​

​*const​

​​的差別也是老生常談了,其實也很簡單。

比如​​

​int const*a;​

​​,實際上可以看成是​

​int const (*a)​

​​,這表示指針​

​a​

​​所指向的位址可以變,但是所指向的那個值不能變。

而​​

​int *const a;​

​​,可以看成​

​int* (const a);​

​​,我們都知道a的值其實是一個位址,這就表示​

​a​

​所儲存的位址是不可以變的,但是這個位址對應的值是可以變的。

舉個​

​*const​

​的例子:

int b = 3, c = 5;
    int *const a = &b;
    //a = &c;       這一句是錯的,因為a所指向的位址是不能變的
    cout<<*a<<endl;     // 3
    b = 6;
    cout<<*a<<endl;     // 6      
int b = 3, c = 5;
int const *a = &b;
cout<<*a<<endl;     // 3
//*a = 6;       不能對*a進行修改,因為其值為const不可變
b = 6;          //但是可以用b來修改
cout<<*a<<endl;     // 6      
int b = 3, c = 5;
    const int * const a = &b;
   // a = &c;
   // *a = 6;      

繼續閱讀