---
# System prepended metadata

title: C語言題庫-044

---

# C語言題庫-044
53、Typedef 在C 語言中頻繁用以聲明一個已經存在的
數據類型的同義字。也可以用預處理器做類似的事。例
如，思考一下下面的例子：
```
#define dPS struct s *
typedef struct s * tPS;
```
以上兩種情況的意圖都是要定義dPS 和tPS 作爲一個
指向結構s指針。哪種方法更好呢？（如果有的話）爲
什麼？
【參考答案】這是一個非常微妙的問題，任何人答對這個問題（正當的原
因）是應當被恭喜的。答案是：typedef 更好。思考下面的例子：
```
dPS p 1,p2;
tPS p3,p4;
```
第一個擴展爲
struct s * p1, p2;
上面的代碼定義p1爲一個指向結構的指，p2爲一個實際的結構，這也許
不是你想要的。第二個例子正確地定義了p3 和p4 兩個指針。

