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;