把*讀作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的值是可以被修改的,但是不能再指向其他變數
const int x=3; //則此時x為常量,不可進行再賦值
const
int *p=null;
intconst *p=null;//(兩種寫法完全等價)
int *const p=null;
const
int *const p=null;
intconst *const p=null;(這兩種寫法也是完全等價的)
int x=3; const
int *p=&x; *p=4
//錯誤,因為const指定的為*p;
p=&y;//(正確)`
int x=3; const
int *const p=&x; p=&y(錯誤,因為const指向的為p,只能為x的位址)
int x=3;const int &y=x; y=10
錯誤,y通過const限定只能為x的別名,值為3
即乙個可變指標不允許指向乙個不可變的常量,而乙個不可變的指標可以指向乙個可變的變數:
const
int x=3;
int *y=&x;
(這種寫法是錯誤的因為x本身定義為const,在用乙個可變的指標指向,那麼就有用指標改變x值得風險,這是系統所不允許的);
int x=3;
const
int *y=&x;
(正確,這樣保證了指針對x只有可讀性,而沒有可寫性) const的注意事項
關於const 在c中是唯讀變數,可偷偷改變其值 而在c 中是常量,區域性const可以通過取位址來改變其值int p int a 因為區域性const放在棧區。typedef char pstr const char p1 a const pstr p2 a p1 正確,只是 p1不能改 p2 錯...
c 常量(const) 使用的注意事項
在我們編碼的過程 const 是我們經常用到的一種宣告型別,如果不了解const的執行機制,有時候會發生一些莫名其妙的bug,可能讓我們掉入深坑中。接下來我們一起看看常量的應用吧!1.常量預設是靜態型別,所以不能和static一起使用 2.常量是在編譯時計算的,它的表示式中不能包含變數 如 cons...
c 常量(const) 使用的注意事項
在我們編碼的過程 const 是我們經常用到的一種宣告型別,如果不了解const的執行機制,有時候會發生一些莫名其妙的bug,可能讓我們掉入深坑中。接下來我們一起看看常量的應用吧!1.常量預設是靜態型別,所以不能和static一起使用 2.常量是在編譯時計算的,它的表示式中不能包含變數 如 cons...