1.const int *p=「hello」;
這個意思就是這個指標變數p指向的內容不能改變,但是可以改變讓p指向其他的位址。
const char *p=「hello」;
p=「ok」;
printf("%s",p);
所以這個的執行結果就是ok,如果稍加修改
const char *p=「hello」;
p[0]=『o』;
printf("%s",p);
這樣編譯的時候就會出現問題。
2.char *const p=「hello」;
這個意思就相反,指標指向的內容可以改變,但是不能改變指標的指向。
char *const p=「hello」;
p[1]=『w』;
printf("%s",p);
會出現下述的結果
但是這樣也是錯誤的,原因是這裡是字串和字元在windows下是存在常量儲存區也是不可改寫的所以我們修改一下程式
int n=3;
int * const p=&n;
*p=5;
printf("%d",*p);
那這樣執行的結果就是5,完全正確,但是
int n=3,m=3;
int *const p=&n;
p=&m;
printf("%d",*p);
這樣就會出現問題。
還需要注意一點就是,我們這樣寫也是錯誤的,這是初學者容易犯的錯誤。
int n=3;
int * const p;
p=&n;
printf("%d",*p);
我們要在這個常量指標定義的時候就賦值。
為了方便記憶我們可以這樣理解
const int *p;
因為p是乙個指向int型資料的指標,如果我們const int就是把這個int資料變成常量,所以p指向的資料當然是不可修改的啦。
而int *const p;
就是把指標變成乙個常量,裡面存的位址當然不可以改變,但是指向的另乙個值並沒有定義為常量,自然是可以改變的。
當然啦,
const int *const p;
這樣寫也是完全正確的啦!
關於const的用法
在生活或工作中,對於一些檔案 程式或資料,需要設定對它們的讀寫許可權。在必要的時候,如果限定一些資料只具有 讀 的許可權,而不能對它們進行賦值或修改,這時,我們需要使用 const 對資料進行修飾。在對const進行解釋之前,先引入兩個名詞 左值 右值 左值 放在 賦值 符號左邊的就是左值。其他情況...
關於const用法的總結
include if 0 測試const 變數 int main endif if 0 測試指標常量 const int a 二級指標修改 一級指標的值 void test const int a void test02 int a 二級指標,把實參的位址,扔過來.void test02 const...
關於c 中const的用法
1.當然最常用的還是作為常量。1 const int p的用法,表示指向的值得型別不變還是int型,但p的值可以變,可以這樣理解 自以為指向const的指標 可以將非const的物件賦值給他例如可以這樣 int i 3 int j 4 const int p p i cout p p j cout ...