Typedef
在C語言中頻繁用以聲明一個已經存在的數據類型的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子:
#define dPS struct s *
typedef struct s * tPS;
以上兩種情況的意圖都是要定義dPS 和 tPS
作爲一個指向結構s指針。哪種方法更好呢?(如果有的話)爲什麼?
這是一個非常微妙的問題,任何人答對這個問題(正當的原因)是應當被恭喜的。答案是:typedef更好。思考下面的例子:
#include<stdio.h>
#define dPS struct student*
typedef struct student* tPS;
struct student
{
long num;
char name[10];
float score[3];
}stud1,stud2,stud3,stud4;
void main()
{
tPS p1,p2;
dPS p3,p4;
//struct student* p3;
p1 = &stud1;
p2 = &stud2;
p3 = &stud3;
p4 = &stud4;
system("pause");
}
上面的代碼定義p3爲一個指向結構的指,p4爲一個實際的結構,這也許不是你想要的。第二個例子正確地定義了p1
和p2 兩個指針。