在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 ...