1. 程式人生 > >const的用法 & 與define 的區別

const的用法 & 與define 的區別

關鍵字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 可以保護被修飾的東西,防止意外修改,增強了程式的健壯性