const的用法 & 與define 的區別
阿新 • • 發佈:2018-12-15
關鍵字const是用來定義常變數的,一個變數如果被const修飾那麼他的值就不能被改變
還有#define,#define是在預編譯的時候進行處理的
先講講#define的用法
#include <stdio.h>
#define CALC(x) x*x
int main()
{
int number = CALC(5 + 5) / (2 + 2);
printf("%d\n", number);
return 0;
}
31
分析:程式做了什麼,在預編譯的時候,程式將 x*x替換為 CALC(x) 即: int number = 5+5*5+5/(2+2) //接下來運算就和我們學的數學一樣了
#define定義的巨集,就是巨集替換,巨集是在預處理階段展開的。
const與define的區別:
- const 定義的常數是變數也帶型別, #define 定義的只是個常數 不帶型別
- define是在編譯的預處理階段起作用,而const是在 編譯、執行的時候起作用
- define只是簡單的巨集替換,沒有型別檢查,而const有對應的資料型別,是要進行判斷檢查,可以避免一些不必要的錯誤
- const常變數可以進行除錯的,define是不能進行除錯的,因為在預編譯階段就已經替換掉了
與#define相比const的優點:
- 預編譯指令只是對值進行替換,不對型別進行檢查,而const要進行型別檢查
- const 可以保護被修飾的東西,防止意外修改,增強了程式的健壯性