2010-12-17 10 views
5

は、それは可能ですか?構造体の独自の型へのポインタ?

typedef struct { 
    listLink *next; 
    listLink *prev; 

    void *data; 
} listLink; 
+0

tm1rbtが経験した初期混乱が構造体をtypedeff'ingしないための古典的な引数です。クライアントコードで 'struct listLink'を書くことはあまり面倒ではありません。 typedefを持つことは難しく、まったく必要ありません。 –

+0

関連:[構造体の定義対構造体のtypedef](http://stackoverflow.com/questions/1675351/typedef-struct-vs-struct-definitions) – styfle

答えて

6

はい、これではい

struct list { 
    int value; 
    struct list *next; 
}; 

または

typedef struct list 
{ 
     int value; 
     struct list *next; 
} list; 
3

をsyntaxisていますが、構造体自体与える必要があるので、typedefでは、後文でまで発生しません。名。例えば。

struct listLink { 
    struct listLink *next; 
    struct listLink *prev; 

    void *data; 
}; 

そして、あなたがstruct listLink <whatever>として、各インスタンスを宣言する必要がしたくない場合は、typedefでのそれをラップすることができます。第osgrx与えられた構文を持つ

0

この可能。プラス、これは、リンクされたリストと呼ばれる:http://www.ehow.com/how_2056292_create-linked-list-c.html

はそれを定義するためのtypedefを使用し、その後、名前を選択します。リンクされているすべてのリストには、1つの変数しかない場合でも構造体が必要です。

typedef struct product_data PRODUCT_DATA; 

構造体を定義します。それははっきりから構造体を分離

typedef struct listLink listLink ; 

struct listLink{ 
    listLink *next; 
    listLink *prev; 

    void *data; 
} ; 

とメンバーと変数:私はこのバージョンを好む

struct product_data { 
int product_code; 
int product_size; 
PRODUCT_DATA *next; 
}; 
+2

私は血まみれのリンクリストが何であるかを知っている:P –

+0

はあなたを思えませんあなたはそのような質問をするときに行う;) – Oleiade

0

:最後の要素はあなただけで定義され、「次」という名前の型へのポインタでなければなりません。彼らは別の名前空間を持っているので、構造体とtypedefの両方に同じ名前を使用して

struct listLink, listLinkは、問題ではありません。

関連する問題