C++中的const和define
1 const基礎知識(用法、含義、好處)
初級理解:const是定義常量==》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修改形參的時候,在利用形參不能修改指針所向的內存空間,即指針所指內存空間中的數據不能被修改 保證了內存空間中數據的安全性,避免多個指向該內存空間的指針對該內存空間中的數據不斷的被修改導致程序錯誤,保證了數據的互斥性。 |
2 C++中const運行機制
int main() { const int a = 10; int *p = (int*)&a; printf("a===>%d\n", a); *p = 11; printf("a===>%d\n", a); return 0; } |
C++編譯器對const常量的處理:
|
|
注意:
|
結論:
|
3 #define基礎知識
void fun1() { #define a 10 const int b = 20; //#undef a # undef //若不讓define具有全局性,則在後加上undef註銷所有定義的常量,undef a 僅僅註銷a常量。 }
void fun2() { printf("a = %d\n", a); printf("b = %d\n", b); }
int main() { fun1(); fun2(); return 0; } |
#define的含義與const相同,都是定義常量,只是define定義的爲全局型常量,const定義的常量有作用域 |
4 const和#define區別
對比:
|
|
|