const在C與C 中的使用

2021-08-28 19:56:38 字數 535 閱讀 9679

在c語言中const修飾唯讀變數,例如  const int a = 0; 此時a為唯讀的,不能通過  a = 10;這種手段進行值的修改,

若想修改a的值,可通過指標來完成,如  int *pa = (int *)&a, *pa = 10;此時 a 的值變為10;

在c++中,若const修飾變數,則該變數變為常量,儲存在符號表中,使用時在從符號表中取值,且編譯器是不會為該常量

分配記憶體,例如  const int a = 10;此時a的值固定為10,這類似於#define定義的巨集;當需要對const常量進行取位址或

extern操作時,編譯器會為這個變數在記憶體中開闢乙個臨時空間,但const常量並不使用這塊空間,取值依舊從符號表中取。

關於const與#define的區別

1.巨集(define)是在預處理時進行的完全的文字替換操作,const是在編譯時處理的;

2.const常量會做型別檢測與作用域檢測

3.const常量的作用域與變數相同,而巨集(define)的作用域為從巨集定義位置開始到檔案結束或到撤銷巨集為止(undef)。

c與c 中const使用

c中可以修改const修飾的變數的值 區域性變數 int main 全域性變數 const int c 10 唯讀 int main c 中不可以修改const修飾的變數的值 區域性變數 int main 為什麼 p輸出的是11?原因 區域性變數 const int c其實是儲存在符號表中,無記憶體...

const在C與C 中的區別

const修飾的變數稱為常變數,在編譯階段,判斷其有沒有做左值,其他用法與普通變數一樣。普通變數存放資料在執行階段才能知道 const修飾的變數稱為常量,也是在編譯階段,將常量出現的地方替換為相應初始化的值 1.常量不能修改 直接與間接 2.const 修飾全域性變數是將其變為local 3.必須初...

c中的const與c 中的const

c中的const是乙個偽唯讀識別符號。include include int main 此時輸出a的值為20,被指標間接的改變了。c 中,const進行了增強,不在是乙個偽識別符號了。const int a 10 int p int a p 20 cout a p endl cout a endl ...