1. const char *p1; 2. char *const p2; 以上兩種情況,到底哪種是指標不能變,哪種是變數不能變呢?下面做乙個記錄,防止以後出錯
記住一句口訣「左定值,右定向」
如果const在 * 左邊,那麼定義的變數值不能改變,但指標是可以改變的 如果const在 * 右邊,方向即指標不能變,也就是這個指標只能指向這塊記憶體,你可以改變記憶體的值,但不能通過指標引用來改變
再回到上面的例子: 1.const在 * 的左邊,所以,p1的指向的值是不能變的,但p1這個指標可以改變,例如p1++ 2.const在 * 的右邊,所以,p2指標不能變,只能指向這塊記憶體,但這塊記憶體的值確實可以變的,例如(*p2)++
上面那個(*p2)++ 括號千萬不能省,因為一目運算子 ++ 的優先順序比 *(取值)要高,不加括號就是指標加1後取值,這樣是錯誤的。 關於運算子優先順序的運算下次再寫乙個記錄
const修飾的變數
const定義的常量不能直接被修改,只能間接被修改,如,通過指標。int main const int a 20 int p 10 指標變數指向的是a的位址,通過給指標變數p賦值來改變a中的值 printf d n a return 0 結果 10 在c語言中,當const修飾的識別符號,這個識別符...
const 修飾的唯讀變數
const 修飾的唯讀變數必須在定義的同時初始化 編譯器通常不為普通const 唯讀變數分配儲存空間,而是將它們儲存在符號表中,這使 得它成為乙個編譯期間的值,沒有了儲存與讀記憶體的操作,使得它的效率也很高。例如 define m 3 巨集常量 const int n 5 此時並未將n 放入記憶體中...
const修飾變數 指標詳解
const常用來修飾普通變數,指標變數,甚至是函式的返回值,可以提高程式的健壯性,其用的最多之處是用來修飾函式的形參,防止修改了呼叫函式中實參指向位址中的資料及在被調函式執行中修改了形參值。本文主要討論c語言中const的使用規則及其含義,下文由淺入深展開討論。基本規則 規則1 const修飾後的變...