【點滴收藏】typedef 與 define

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 兩個指針。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章