常量
const int MAX = 128;
指標
const int * p 或 int const * p
寫法:const 在*前
作用:指標不能修改所指向的內容,但是可以改變指向
int a = 0;
int b = 0;
const int * i = &a;
int const * j = &b; // 不要這樣寫,雖然能運算
*i = 1; // 錯誤
*j = 1; // 錯誤
i = &b; // 正確
j = &a; // 正確
int * const p
寫法:const 在*後
作用:指標可以修改所指向的內容,但是不能改變指向
int a = 0;
int b = 0;
int * const i = &a;
*i = 1; // 正確
i = &b; // 錯誤
const int * const p 或 int const * const p
寫法:前,後,各加一個const
作用:指標不能修改指向的內容,也不能改變指向
int a = 0;
int b = 0;
const int * const p = &a;
*p = 1;
p = &b;
引用
int & r
可以改變值,也可以改變指向
有的地方說,引用是不能改變指向的,但我的電腦可以…原因不詳…
int a = 0;
int b = 0;
int & r = a;
r = 1; // 正確
r = b; // 正確
const int & r 或 int const & r
寫法:const 在&前
作用:引用不能修改值,也不能改變引用
int a = 0;
int b = 0;
const int & i = a;
int const & j = b; // 不要這樣寫,雖然能執行
i = 1; // 錯誤
j = 1; // 錯誤
i = b; // 錯誤
j = a; // 錯誤
int & const r
錯誤,錯誤,錯誤,這種寫法不存在