1. 程式人生 > >預處理、const、static與sizeof-使用const與#define的特點及區別

預處理、const、static與sizeof-使用const與#define的特點及區別

特點 周期 sizeof 傳遞 const常量 fin 參數 編譯器 run

1:#define只是用來做文本替換的。例如:

#define PI 3.1415926
float angle;
angle=30*PI/180;

那麽,程序進行編譯的時候,編譯器會首先將“#define PI 3.1415926”以後所有代碼中的“PI”全部換成“3.1415926”,然後進行編譯。因此,#define常量則是一個Coppile-Time概念,它的生命周期止於編譯器,它存在於程序的代碼段,在實際程序中它只是一個常數、一個命令中的參數,並沒有實際的存在。

const常量存在於程序的數據段,並在堆棧分配了空間。const常量是一個Run-Time的概念,它在程序中確確實實地存在著並可以被調用、傳遞。const常量有數據類型,而宏常量沒有數據類型。編譯器可以對const常量進行類型安全檢查。

預處理、const、static與sizeof-使用const與#define的特點及區別