C 中的const分析

2021-10-21 14:00:15 字數 743 閱讀 9069

c++在c語言基礎上對const進行了處理,具體為:

當碰見const宣告時在符號表中放入常量,使用時,可以理解為從常量表中取出值進行簡單的文字替換

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

編譯過程中若發現下述情況則給對應的常量分配儲存空間:對const常量使用了extern,對const常量使用&操作符

雖然c++編譯器雖然可能為const常量分配空間,但不會使用其儲存空間中的值。

c++中的常量類似於巨集定義,即const int c = 5; 可以大致理解為 #define c 5。但是也存在不同的地方,具體為const常量是由編譯器處理,編譯器對const常量進行型別檢查和作用域檢查,而巨集定義由預處理器處理,單純的文字替換。

符號表:

c語言c++

是否分配變數

const為唯讀變數,會分配儲存空間

當使用&對const常量取位址,以及當const常量為全域性,且需要在其他檔案中使用時,可能會分配儲存空間

const int c = 0;

int *p = (int*)&c;

*p = 5;

printf(c); //c語言編譯器編譯後輸出5,c++編譯器編譯後輸出0

printf(*p);// c語言、c++語言輸出都為5

const在c 中的用法分析

include using std cout using std endl int main 對於const char 和 char const之間的分析,如 中的const char pstring i am chinese 定義初始化後 i am chinese 這個變數為常量唯讀,如果用pst...

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

C 中const與 define的利弊分析

c 中const與 define的區別如下 用 define max 255定義的常量是沒有型別的,所給出的是乙個立即數,編譯器只是把所定義的常量值與所定義的常量的名字聯絡起來,define所定義的巨集變數在預處理的時候進行替換,在程式中使用到該常量的地方都要進行拷貝替換 用const float ...