用Typedef构造复合类型


C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:

#define dPS struct s *

typedef struct s * tPS;

以上两种情况的意图都是要定义dPS tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?

这是一个非常微妙的问题,任何人答对这个问题(正当的原因哦,而不是猜,如果你没有原因,说不会比猜一个答案要好的多,记住啊,说话是要讲根据的)是应当被恭喜的。答案是:typedef更好。思考下面的例子:

dPS p1,p2;

tPS p3,p4;

第一个扩展为

struct s * p1, p2;

上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3p4 两个指针。


只是偏好而已,比如memsetmemcopy以及strcpy都能拷贝字符串,到底有什么区别呢?看你是否善于比较是否关注细节)


你可能感兴趣的:(用Typedef构造复合类型)