進化後的const分析

2021-08-08 16:45:52 字數 1688 閱讀 8687

一、c語言中的const

1. const修飾的變數是唯讀的,本質上還是變數

2. const修飾的區域性變數在棧上分配空間

3. const修飾的全域性變數在唯讀儲存區分配空間

4. const只在編譯期有用,在執行期無用 

const修飾的變數不是

真正的常量,它只是告訴編譯器該變數不能出現在賦值符號的左邊。

c語言中真正意思上的常量只能通過列舉(enum)來定義 二

、c++語言中的const

1.c++是在c的基礎上對const進行的進化處理

1.1  當碰見const宣告時在符號表中放入常量

1.2  編譯過程中若發現使用常量則直接以符號表中的值替換

1.3  編譯過程中若發現下述情況則給對應的常量分配儲存空間

1.3.1 對const常量使用extern

1.3.2 對const常量使用&操作符 

#include

int

main()

gcc編譯器結果為  5   5

g++編譯器結果為 0   5

2 .c++中的const常量

類似於巨集定義

const

intc

=5; 類似

#definec5

3 .c++中的const常量在與巨集定義不同

3.1 const 常量是由

編譯器處理

3.2 編譯器對

const

常量進行

型別檢查 和作

用域檢查

3.3 巨集定義由預處理器處理,

單純的文字替換 三

、c++中的const與define 對比

const被編譯器處理而define被預編譯器處理

#include

void

f()

void

g()

int

main()

;

inti=

0;

for(i

=0;i

<(a

+b);i

++)

f();

g();

return

0;

}

四、小結

1.與c語言不同,c++中的const不是唯讀變數

2.c++中的const是乙個真正意義上的常量

3.c++編譯器可能會為const常量分配空間

4.c++完全相容c語言中const常量的語法特性

C 進化後的const分析

事物的難度遠遠低於對事物的恐懼!對於const關鍵字,在c高階分析中,我們知道,const在c語言中有如下特性 const修飾的變數是唯讀的,其本質還是變數而,也就是唯讀變數 依舊可以通過別的手段修改const變數 const修飾的區域性變數在棧上分配空間 const修飾的全域性變數或靜態區域性變數...

第3課 進化後的const分析

1 const修飾的變數具有唯讀屬性,本質還是變數,只是告訴編譯器該變數不能出現在賦值符號的左邊。2 const 修飾的區域性變數在棧上分配空間,修飾的全域性變數在唯讀儲存區分配空間。3 const 只在編譯期間有用,在執行期間無用。const 不能定義真正意義上的常量 const英文含義 4 c ...

第3課 進化後的const分析

本文內容取自於對狄泰學院 唐佐林老師 c 深度解析 課程的學習總結 const修改的變數是唯讀的,本質還是變數const修改的區域性變數在棧上分配空間 const修改的全域性變數在唯讀儲存區分配空間 const只在編譯期有用,在執行期無用 const 修飾的變數不是真的常量,它只是告訴 編譯器該變數...