#define与const的差别
#define與const的差別
雖然他們在使用中感覺“差不多”,但是他們在實現上有什么區別?
請看下面的代碼:
#define T 13 /*用#define定義的一個常量T*/
int main()
{
??? const int t=13;/*用const定義的一個常量*/
??? int n=t;/*把t賦值給n*/
??? int m=T;/*把T賦值給m*/
}
1.差別:
const與#define最大的差別在于:前者在堆棧分配了空間,而后者只是把具體數值直接傳遞到目標變量罷了。或者說,const的常量是一個Run-Time的概念,他在程序中確確實實的存在可以被調用、傳遞。而#define常量則是一個Compile-Time概念,它的生命周期止于編譯期:在實際程序中他只是一個常數、一個命令中的參數,沒有實際的存在。
const常量存在于程序的數據段.
#define常量存在于程序的代碼段。
2優缺點:
至于兩者的優缺點,要看具體的情況了。一般的常數應用,我個人認為#define是一個更好的選擇:
i.從run-time的角度來看,他在空間上和時間上都有很好優勢。
ii.從compile-time的角度來看,類似m=t*10的代碼不會被編譯器優化,t*10的操作需要在run-time執行。而#define的常量會被合并。
但是:如果你需要粗魯的修改常數的值,那就的使用const了,因為后者在程序中沒有實際的存在轉載于:https://www.cnblogs.com/wangliang651/archive/2007/03/19/680087.html
總結
以上是生活随笔為你收集整理的#define与const的差别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强大的.NET反编译工具Reflecto
- 下一篇: Microsoft .NET Pet S