const 與 define的區別

2021-06-12 21:03:11 字數 544 閱讀 2979

在c程式中,const的用法主要有定義常量、修飾函式引數、修飾函式返回值等3個用處;

在c++程式中,它還可以修飾函式的定義體,定義類中某個成員函式為恆態函式,即不改變類中的資料成員

1)const 有資料型別,而巨集沒有資料型別,編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,

沒有型別安全檢查,並且在字元替換中可能會產生意料不到的錯誤(邊際效應)

2)有些整合化的除錯工具可以對const常量進行除錯,但是不能對巨集常量進行除錯。

在c++程式中只使用const常量而不使用巨集常量

「盡量用編譯器而不用預處理」,因為#define經常被認為好象不是語言本身的一部分

#define  temp  20 

編譯器會永遠也看不到 temp 這個符號名,因為在原始碼進入編譯器之前,它會被預處理程式去掉,於是 temp 不會加入到符號列表中。

3)const與#define最大的差別在於:前者在堆疊分配了空間,而後者只是把具體數值直接傳遞到目標變數罷了

const常量存在於程式的資料段,#define常量存在於程式的**段。

define與const的區別

define 定義的其實是乙個字面常量的名字,在程式中可以把這個名字等價於字面常量使用,在編譯時會被編譯器替換為該字面常量。使用這種方式,只能達到提高程式可讀性的效果,但是安全性不能得到保證。從const 語句的語法格式可以看出,const 語句支援為常量指定型別,編譯器在編譯 時將其型別進行安全檢...

const與define的區別

const與define的區別 1 編譯器處理方式不同 define巨集是在預處理階段展開。const常量是編譯執行階段使用。2 型別和安全檢查不同 define巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查。3 儲存方式不同 define巨集僅僅是...

const與define的區別

來自 程式設計師面試寶典第五版歐立奇 const操作大回顧 int b 500 const int a b 情況1 int const a b 情況2 int const a b 情況3 const int const a b 情況4 對於情況1和2 a都是常量,a是變數可以改變 改變方法 1 in...