關於const:
在c中是唯讀變數,可偷偷改變其值;
而在c++中是常量,區域性const可以通過取位址來改變其值int *p = (int *)&a;
,因為區域性const放在棧區。
typedef
char* pstr;
const
char *p1 = "a";
const pstr p2 = "a";
p1++; //正確,只是*p1不能改
p2++; //錯誤,pstr是新型別,p2不可改
int a;
int *const p1; //錯誤,必須賦初值如int *const p1 = &a;
intconst *p2; //正確,可以不賦初值
int *const p3 = &a, p4;
/*(*const p3)是整體,所以這裡的p4其實只是個整型變數,不是指標;
對於*p3可以修改其值,p3不可改,實現指針對a的位址鎖定,可改值不可改向*/
const使用注意事項
把 讀作pointer to然後從後往前讀.int const p 可以讀作 p is a pointer to const int,p是指向常量的指標 int const p 可以讀作 p is a const pointer to int,p是指向int型的常指標,此時 p的值是可以被修改的,但...
c 常量(const) 使用的注意事項
在我們編碼的過程 const 是我們經常用到的一種宣告型別,如果不了解const的執行機制,有時候會發生一些莫名其妙的bug,可能讓我們掉入深坑中。接下來我們一起看看常量的應用吧!1.常量預設是靜態型別,所以不能和static一起使用 2.常量是在編譯時計算的,它的表示式中不能包含變數 如 cons...
c 常量(const) 使用的注意事項
在我們編碼的過程 const 是我們經常用到的一種宣告型別,如果不了解const的執行機制,有時候會發生一些莫名其妙的bug,可能讓我們掉入深坑中。接下來我們一起看看常量的應用吧!1.常量預設是靜態型別,所以不能和static一起使用 2.常量是在編譯時計算的,它的表示式中不能包含變數 如 cons...