#define定義的宏和const定義的常量有什麼區別?

define 定義的宏指令,程序是在預處理階段將#define定義的宏與內容進行替換,因此在程序運行時,內存的常量區是沒有#define定義的宏的,系統並不給他分配內存,而且在編譯的時候也不會檢查數據類型,出錯的可能性大。

const 定義的常量,是在內存的常量區中的,系統會爲他分配內存,在編譯的時候會檢查數據類型。

另外:#define 注意邊緣效應:

define N 2 + 3 // 這樣定義
int a = N / 2; // 預想結果應該是2, 但結果卻是3

附:

static 所定義的變量都是靜態變量,存在於內存靜態區域,而所有未被初始化的靜態變量系統都會給初始化爲0.地址爲0x00,而且只初始化一次。static控制了變量的作用範圍。
全局變量和static變量都在內存靜態區

static 關鍵字區別:
static全局變量和普通的全局變量的區別:static的全局變量只初始化一次,防止在其他的類文件中被使用。

static局部變量和普通的局部變量的區別:static的局部變量只初始化一次,下一次依據上一次的結果,因爲內存地址就一份。

static函數與普通函數的區別:static函數只在內存中存有一份,而普通的函數在每次調用中都會維持一份拷貝

作爲一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流羣:413038000,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!

以下資料在羣文件可自行下載!

作者:宇軒Simid
鏈接:https://www.jianshu.com/p/a177d4b793c7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章