我定义了这个结构

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 类型。

提前致谢。

有帮助吗?

解决方案

你有两种不同的类型——在 struct, , 你有 声明了一个新类型 un. 。像这样写:

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

其他提示

你永远不会定义一个 struct un 但只是一个标识符 un (没有 struct) 指的是类型 struct UNIAO_NOME.

使用 struct un* 实际上是一个隐式的“前向声明” struct un. 。对于编译器来说,这足以推断出指向此类尚未定义的结构的指针有多大。

一个可以用来形容这种头痛的成语是 typedef 你所有的结构 他们的完整声明:

typedef struct un un;

向前十二月^^^^^^^^^^^
输入别名 ------------------^^

struct un
{
     int vert;
     un *Pai; 
};
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top