define 和 const 定義常量比較。

2021-07-27 17:53:35 字數 779 閱讀 4020

在c++中可以使用#define或者const來定義常量,但是使用const相比起#define有更多的優點。——–

以下部分內容選自《程式猿面試寶典》

#define x 10

#define y x+x

-》y*y //原意:20*20 實際上是 10+10*10+10

當然,這樣的邊際效應可以通過良好的編寫巨集習慣避免。

既然const常量可以取代#define常量那麼為什麼有的庫(程式)使用的#define常量

常量的引進是在早期的c++版本中,當時標準c規範正在制訂。那時,常量被看做乙個好的思想而被包含在c中。但是,c中的const的意思是」乙個不能被改變的普通變數」。在c中,它總是占用記憶體,而且它的名字是全域性符。c編譯器不能把const看成乙個編譯期間的常量。在c中,如果寫:

const bufsize=100;  

char buf[bufsize];

儘管看起來好像做了一件合理的事,但這將得到乙個錯誤的結果。因為bufsize占用記憶體的某個地方,所以c編譯器不知道它在編譯時的值。在c語言中可以選擇這樣書寫:

extern

const bufsize;//declaration only

這種方法也可用在c語言中。在c語言中使用限定符const不是很有用,即使是在常數表示式裡(必須在編譯期間被求出)想使用乙個已命名的值,使用const也不是很有用的。c迫使程式設計師在預處理器裡使用# define。

define巨集定義和const常變數區別

1.define是巨集定義,程式在預處理階段將用define定義的內容進行了替換。因此程式執行時,常量表中並沒有用define定義的常量,系統不為它分配記憶體。const定義的常量,在程式執行時在常量表中,系統為它分配記憶體。2.define定義的常量,預處理時只是直接進行了替換。所以編譯時不能進行...

define巨集定義和const

define是在預編譯階段就定義的常量,不占用記憶體空間 const可以在程式的任何時候定義,是乙個全域性的常量,放在記憶體的static部分。define巨集定義沒有指定的型別,而const在定義時就指定了常量的型別。const int p p可變,p指向的物件不可變 int const p p可...

define巨集定義和const常量定義之間的區別

define部分 巨集不僅可以用來代替常數值,還可以用來代替表示式,甚至是 段。巨集的功能很強大,但也容易出錯,所以其利弊大小頗有爭議。巨集的語法為 define 巨集名稱 巨集值 注意,巨集定義不是c或c 嚴格意義上的語句,所以其行末不用加分號結束。作為一種建議和一種廣大程式設計師共同的習慣,巨集...