質問

私はこの構造

を定義しました
typedef  struct UNIAO_NOME
{
     int vert;
     struct un *Pai; 
} un;
.

しかし、それでは、

を試してみると
int name (un *conj/*pointer to a subset*/)
{
    un c;/*subset*/ 
    c = *conj;
    while (c.Pai != NULL)
        c = *(c.Pai);
    return c.vert;
}
.

編集者はその

c = *(c.Pai); 
.

が間違っているが、cはun型である。

事前にありがとうございました。

役に立ちましたか?

解決

2つの異なるタイプがあります。そのようにそれを書く:

typedef struct UNIAO_NOME
{
     int vert;
     struct UNIAO_NOME *Pai;    // refers to this type
} un;
.

他のヒント

struct unを定義することはなく、unの型を参照する識別子structstruct UNIAO_NOMEなし)だけです。

struct un*の使用は、実際にはstruct unの暗黙の「転送宣言」です。コンパイラの場合、これは、そのような定義されていない構造へのポインタがどれだけ大きくなるかを推測するのに十分です。

そのような種類の頭痛に使用できるIDIOMは、一般的な宣言のすべての構造体を一般的な宣言に一般的な宣言にすることです:

typedef struct un un;
.

前方DEC ^^^^^^^^^^^^^
タイプ別名---------------- ^^

struct un
{
     int vert;
     un *Pai; 
};
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top