typedef struct {
int age;
char *name;
char flag;
} Person;
Person p1; // 等價於 struct person p1;
struct person p2; // 原寫法
// 原 signal 原型
void (*signal(int signo, void (*func)(int)))(int);
// 使用 typedef
typedef void (*sighandler_t)(int);
sighandler_t signal(int signo, sighandler_t func);
// 錯誤寫法:int *p1, p2; // p1 是指針,p2 是 int
// 正確寫法:
typedef int* IntPtr;
IntPtr p1, p2; // 兩者皆為 int*
// 無 typedef 版本
int *p1, p2; // 警告:p2 賦值指釖給 int
p1 = &a; p2 = &b; // 錯誤:p2 非指針
// 有 typedef 版本
typedef int* PInt;
PInt p1, p2; // 編譯無警告,運行正常
善用 typedef 讓代碼更清晰、更安全,特別是涉及函數指針、多層指針時。