2回

2017-01-31 7 views
-1

のための構造体のtypedefを定義し、私はコードで見たようなもの:2回

struct listnode{ 
char data; 
struct listnode *nextptr;} 

typedef struct listnode LISTNODE; 

typedef LISTNODE *listnodeptr; 

なぜ、彼は2回のtypedef使用しました?

+0

Oneと他の'構造体listnodeの* 'のために組み合わせることができますか? –

+0

1)markdownでコードを適切にフォーマットします。 FAQを読んでください。 2)これは 'typedef'がポインタとなるコードです。読みやすくするためではない厳しいものです。 3)大文字の名前は、マクロやenum-constant以外のものには使用しないでください。 4)Cブックを読んで、コードスニペットのためのより良いリソースを見つけてください。 – Olaf

答えて

0

2つのtypedefここでは繰り返しはありません。別名2つです。異なるタイプです。

  • typedef struct listnode LISTNODE;struct listnode
  • typedef LISTNODE *listnodeptr;
  • の別名であるタイプLISTNODEstruct listnode *
0

LISTNODE *の別名であるタイプlistnodeptr、すなわちを作成最初のtypedef構造のエイリアスを宣言作成自身

​​

2番目のtypedefは、構造体型のオブジェクトへのポインタの別名を宣言します。

typedef LISTNODE * listnodeptr; 
     ^^^^^^^^^^ 

ただ1つの型定義を複数使用するかどうかはスタイルの問題です。

すべてのこれら三つの宣言は1つの宣言 `構造体listode`ため

typedef struct listnode{ 
char data; 
struct listnode *nextptr; 
} LISTNODE, *listnodeptr;