1. 程式人生 > >c語言中宏定義和常量定義的區別

c語言中宏定義和常量定義的區別

沒有 int 符號表 cnblogs 格式 nbsp 參數 不同之處 區別

  他們有共同的好處就是“一改全改,避免輸入錯誤”哪兩者有不同之處嗎?有的。

  主要區別就在於,宏定義是在編譯之前進行的,而const是在編譯階段處理的

宏定義不占用內存單元而const定義的常量占用內存單元

宏定義與const常量有著相同的作用-----用一個符號表示數據,但是,有些書上說定義數組常量不能用const,經過測試也是可以的,環境是vs2015

  常量定義定義數組的長度

  const int N=66;

  int arr[N];

有的書上說是錯誤的,但經過我在vs2015上測試是可以的

  宏定義定義數組的長度

  #define N 66

  int arr[N];

帶參數的宏定義

格式:

#define 宏名(參數列表) 要更換的內容

#define SUM(a,b) a+v

程序代碼如下:

S=SUM(6,8);

將宏定義中的a和b分別替換成6和8,替換後的代碼是:

s=6+8;

#define沒有數據類型,只是單純的替換

#include "stdafx.h"
#include<stdlib.h>
#define add(a,b) (a)>(b)?(a):(b)
int main()
{   
    printf("%s", add("abc", "bcd"));
    system("pause");
    return 0;
}
#include "
stdafx.h" #include<stdlib.h> #define add(a,b) (a)>(b)?(a):(b) int main() { printf("%d", add(1+2, 3+4)); system("pause"); return 0; }

這些都是可以的

所以一般建議使用函數不建議使用宏定義

c語言中宏定義和常量定義的區別