C或C中define和const的區別

2021-03-07 04:04:37 字數 883 閱讀 6807

1樓:匿名使用者

#define 就是一個巨集替換過程,不用開闢記憶體空間

const 定義了變數 要佔記憶體空間

2樓:匿名使用者

(1) 編譯器處理方式不同

define巨集是在預處理階段。

const常量是編譯執行階段使用。

(2) 型別和安全檢查不同

define巨集沒有型別,不做任何型別檢查,僅僅是。

const常量有具體的型別,在編譯階段會執行型別檢查。

(3) 儲存方式不同

define巨集僅僅是,有多少地方使用,就多少次,不會分配記憶體。(巨集定義不分配記憶體,變數定義分配記憶體。)const常量會在記憶體中分配(可以是堆中也可以是棧中)。

(4)const 可以節省空間,避免不必要的記憶體分配。

(5) 提高了效率。 編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為一個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高。

(6) 巨集替換隻作替換,不做計算,不做表示式求解;巨集預編譯時就替換了,程式執行時,並不分配記憶體。

3樓:漫天大少

#define有個致命的缺陷,不受作用域限制。凡是在#define之後的**,都可以直接使用#define定義的數值。

在不涉及到條件編譯,並且只是使用固定值的前提下,我們都應該用const來替代#define。

4樓:匿名使用者

5樓:匿名使用者

const 能指明型別,但是define不能,這能減少不必要的麻煩~~

C 中public private和protected訪問

在本類中,protected與private是相同的,但protected可以被繼承,而private卻不行。只有公有成員才能在類的外部訪問。版如class a a ca ca.a error ca.b ok ca.c error cb.c error。雖權然c也是 的成員,但c在被繼承的時候變成私...

JNIEnv的使用在C和C 中的區別

delete or delete?問題沒說清楚啊 如果是上面所述 delete主要是用來釋放陣列 特別是自定義陣列 常常和new配合使用 c 中delete和delete的區別 c 中delete和delete的區別如下 在 用 new 分配的單個物件的記憶體空間的時候用 delete,用 new ...

c語言的異或運算,C語言的異或運算

異或是一個數 算符。它應用於邏輯運算。在 布林值運算 中 真異或假的結果是真,假異或真的結果也是真,真異或真的結果是假,假異或假的結果是假。就是說兩個值不相同,則異或結果為真。反之,為假。在 二進位制值運算 中 不同為1,相同為0,如1001異或1010等於0011。異或也叫半加運算,其運演算法則相...