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。異或也叫半加運算,其運演算法則相...