C:構造体定義内の構造体へのポインター

最初に 1 つのステートメントで typedef を定義し、構造体を前方宣言してから、後続の定義で構造体を定義できます。

typedef struct A A;

struct A
{
    int a;
    int b;
    A* next;
};

編集:他の人が言及したように、前方宣言がなくても、構造体名は構造体定義内で有効です(つまり、 struct A を使用できます) )、しかし、typedef 定義が完了するまで、typedef は使用できません (したがって、A だけを使用します) 有効ではありません)。ポインター メンバーが 1 つだけの場合、これはあまり問題にならないかもしれませんが、多数の自己型ポインターを含む複雑なデータ構造がある場合は、扱いにくいかもしれません。


最初の回答に加えて、typedef および forward 宣言がなくても、これでも問題ありません。

struct A 
{ 
    int a; 
    int b; 
    struct A *next; 
};

struct がありません A* の前

  typedef struct A {
    int a;
    int b;
    struct A* next;
  } A;