Posted on 2010-07-13 21:55
S.l.e!ep.¢% 閱讀(586)
評論(0) 編輯 收藏 引用 所屬分類:
C++
15. Typedef
在
C
語言中頻繁用以聲明一個(gè)已經(jīng)存在的數(shù)據(jù)類型的同義字。也可以用預(yù)處理器做類似的事。例如,思考一下下面的例子:
#define dPS struct s *
typedef struct s * tPS;
以上兩種情況的意圖都是要定義
dPS
和
tPS
作為一個(gè)指向結(jié)構(gòu)
s
指針。哪種方法更好呢?(如果有的話)為什么?
這是一個(gè)非常微妙的問題,任何人答對這個(gè)問題(正當(dāng)?shù)脑颍┦菓?yīng)當(dāng)被恭喜的。答案是:
typedef
更好。思考下面的例子:
dPS p1,p2;
tPS p3,p4;
第一個(gè)擴(kuò)展為
struct s * p1, p2;
上面的代碼定義
p1
為一個(gè)指向結(jié)構(gòu)的指,
p2
為一個(gè)實(shí)際的結(jié)構(gòu),這也許不是你想要的。第二個(gè)例子正確地定義了
p3
和
p4
兩個(gè)指針。