#include#define INT_D int* #define CHAR_D char int main() { /*#define 與 typedef區別*/ typedef int* INT_T; typedef char CHAR_T; INT_T a,b; // a、b都為int型指針 INT_D c,d; // c為int型指針、d為int整型 unsigned CHAR_D e; // #define的類型定義可以類型擴展 // unsigned CHAR_T f; // 這句是錯誤的,typedef重定義類型不能加類型擴展 /* 結構體細節 */ //測試1 struct foo{ int foo; } foo; // 最後面的foo是結構體foo聲明的一個變量 // foo test; // 直接這麼定義一個結構體是錯誤的 foo.foo= 1; // 結構體名可以和內部變量名一樣 printf("foo = %d\n",foo.foo); //測試2 typedef struct fun{ int fun; }fun; fun fn; // 這時可以定義 /* 小結: 1、不要為了方便起見對結構體使用typedef,這樣唯一好處就是你不用寫struct,但是這個關鍵字 可以向你提示一些信息,不應該省掉 2、typedef用在數組、結構、指針以及函數的組合類型;可移植類型,當你需要一種至少20比特的類型時,可以進行 typedef操作,這樣代碼移植到不通平台,要選擇正確類型如short、int、long時,只需要對typedef進行修改,而不用對 每個類型修改 */ return 0; }