C/C++const用法

熊一帆發表於2019-05-11

常量

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

錯誤,錯誤,錯誤,這種寫法不存在