题
我定义了这个结构
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;
};
不隶属于 StackOverflow