const基礎知識(用法、含義、好處)
const int a;
int const b;
const int *c;
int * const d;
const int * const e ;
含義:
第一個第二個意思一樣 代表一個常整形數;
第三個 c是一個指向常整形數的指針(所指向的內存數據不能被修改,但是本身可以修改);
第四個 d 常指針(指針變量不能被修改,但是它所指向內存空間可以被修改);
第五個 e一個指向常整形的常指針(指針和它所指向的內存空間,均不能被修改)。
const的好處
合理的利用const,
1指針做函數參數,可以有效的提高代碼可讀性,減少bug;
2清楚的分清參數的輸入和輸出特性。
int setTeacher_err( const Teacher *p)
//const修改形參的時候,利用形參不能修改指針所指向的內存空間
結論:
C語言中的const變量
C語言中const變量是只讀變量,有自己的存儲空間
C++中的const常量
可能分配存儲空間,也可能不分配存儲空間
1 當const常量為全局,並且需要在其它文件中使用
2 當使用&操作符取const常量的地址
以下代碼用在c中報錯,c++中正確運行:
int main()
{
const int a = 1;
const int b = 2;
int array[a + b] = {0};
int i = 0;
for(i=0; i<(a+b); i++)
{
printf("array[%d] = %d\n", i, array[i]);
}
printf("Press enter to continue ...");
getchar();
return 0;
}
結論:C++中的const修飾的,是一個真正的常量,而不是C中變量(只讀)。
const和#define的區別
C++中的const常量類似於宏定義
const int c = 5; ≈ #define c 5
C++中的const常量在與宏定義不同
const常量是由編譯器處理的,提供類型檢查和作用域檢查,宏定義由預處理器處理,單純的文本替換。