標籤:c++ c語言
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常量是由編譯器處理的,提供類型檢查和範圍檢查,宏定義由前置處理器處理,單純的文本替換。
c/c++中的const