const 修飾的變數真的不能改嗎?

2021-06-01 02:36:48 字數 670 閱讀 4405

我們在學校學習c的時候,我們的老師經常都會跟我們說:如果乙個變數用了const來修飾的話,我們就不能改變這個變數的值。

但是事實是這樣嗎??當然不是。。。。。在c專家程式設計裡面有提到,用const來修飾的變數如果已經初始話了,就不能再給這個

變數直接賦值,但是我們可以用到其他的方法來改變它的值。只要不用這個變數來賦值就可以啦,那麼我們就會想到,我直接利

#includevoid test(const char *p)

void main(int argc,char **argv)

輸出的結果是

這個到底是為什麼第乙個輸出結果是5,但是第二個輸出結果就是6呢??難道是記憶體裡面的數值又變回去啦??其實裡面的記憶體沒有變回去,

只是用數值輸出的時候,const修飾的變數i已經跟初始話的數值掛鉤了,輸出的時候不用訪問記憶體,直接替換。但是字元竄輸出的時候因為要

從變數中尋找陣列位址,所以後面2次用p輸出,但是會不同的原因啦!

為了證明這個我寫了乙個**:

#includevoid test(const long p)

void main(int argc,char **argv)

結果是:

這是本人第一次發部落格,水平有限,請多多指教,有錯的請指教

const修飾的變數

const定義的常量不能直接被修改,只能間接被修改,如,通過指標。int main const int a 20 int p 10 指標變數指向的是a的位址,通過給指標變數p賦值來改變a中的值 printf d n a return 0 結果 10 在c語言中,當const修飾的識別符號,這個識別符...

const修飾的變數

1.const char p1 2.char const p2 以上兩種情況,到底哪種是指標不能變,哪種是變數不能變呢?下面做乙個記錄,防止以後出錯 記住一句口訣 左定值,右定向 如果const在 左邊,那麼定義的變數值不能改變,但指標是可以改變的 如果const在 右邊,方向即指標不能變,也就是這...

const 修飾的唯讀變數

const 修飾的唯讀變數必須在定義的同時初始化 編譯器通常不為普通const 唯讀變數分配儲存空間,而是將它們儲存在符號表中,這使 得它成為乙個編譯期間的值,沒有了儲存與讀記憶體的操作,使得它的效率也很高。例如 define m 3 巨集常量 const int n 5 此時並未將n 放入記憶體中...