typedef 與#define 的區別
typedef : 給一個已經存在的數據類型(注意:是類型不是變量)取一個別名,而非定義一個新的數據類型
#define宏定義: #define宏定義:在預編譯時直接進行簡單的文本替換
舉例:
#define INT_P int*
typedef int* int_p;INT_P a,b;
int_p c,d;
宏定義在預處理時候會直接替換,所以替換為int a,b。這樣b是一個int變量,而不是指針;
typedef 作用是給已存在的數據類型引入一個別名,語法 typedef 已有類型名 類型別名,所以 int_p
是int整型指針類型的別名
注意事項:
1、宏定義時若宏體表達式應該有必要的括號約束,否則很容易出錯;
2、關于把空格寫在類型修飾符和變量名中間,合法但容易產生誤導,或者例如:
char* p1, p2; // 合法但容易產生誤導,一般不這樣寫,容易誤導,改為如下:
char *p1, *p2; // 修飾符和變量標識寫在一起//或者如下寫法,修飾符和類型名寫在一起,每次只定義一個變量
int* p1; //
int* p2; //