const 用法全面解析
下面對const用法進行一下總結:
1. const 修飾的是 只讀變數, 但還是變數,所以不能陣列的長度引數。(陣列長度必須是常量)
2. 編譯器通常不為const只讀變數分配儲存空間,而是儲存在符號表中,這樣會更快的進行操作。
3 const 修飾一般變數的時候,它可以用在型別說明符前,也可以用在型別說明符後。如:
int const i = 2;
const int i = 2;
4.修飾陣列
int const a[5] = {1,2,3,4,5};
const int a[5] = {1,2,3,4,5};
5.修飾指標
const int *p; //p可變,p指向的物件不可變 int const *p; //p可變,p指向的物件不可變 int *const p;//p不可變,p指向的物件可變 const int *const p;//指標p和p指向的物件都不可變
下面是記憶和理解的方法:
先忽略型別名,const離哪一個近就修飾誰(指的是const後面的)。
6.修飾函式的引數和函式的返回值
7.const的值並不是不可以修改的, const修飾的變數n,指的是不能通過n來改變它的值,但是我們可以通過指標來修改。如:
const int a = 3;
int* b = (int*) &a; //要通過強制型別轉換,否則報錯
printf("a = %d, *b = %d\n", a, *b);
*b = 5;
printf("a = %d, *b = %d\n", a, *b);