Определение структуры Typedef с указателями на указанную структуру в качестве ее элементов - PullRequest
1 голос
/ 10 ноября 2011

поэтому обычно этот typedef делает код чище:

typedef struct {
    int x;
} X;

Что если я хочу иметь список, в котором нужны указатели в структуре, как я могу ссылаться на них?

struct X{
   int x;
   struct X * next;
}

Этоработает, но теперь у меня нет typedef для этого?

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Вы можете сделать typedef точно так же, как для любой другой структуры:

typedef struct X {
    int x;
    struct X * next;
} X;

Или вы можете сделать typedef перед структурой:

typedef struct X X;
struct X {
    int x;
    X * next;
};

В первом случае выше мыдолжны ссылаться на struct внутри себя, так как typedef еще не определен.Во втором случае мы явно определяем typedef перед структурой и поэтому можем использовать его внутри.

Обратите внимание, что использование одного и того же имени как для структуры, так и для typedef иногда может быть несколько запутанным, но естьв этом нет ничего плохого.

0 голосов
/ 10 ноября 2011
typedef struct Y{
    int x;
    struct Y *next;
} X;
...