读书人

关于结构体自引用的有关问题

发布时间: 2013-12-05 22:27:44 作者: rapoo

关于结构体自引用的问题
看到几个帖子,关于使用typedef实现结构体自引用,模板如下
struct tag_2; //这里进行结构体不完整的声明
typedef struct tag_2 NODE;
struct tag_2{
int value;
NODE *link;
};

但是我看到有一个实际例子
typedef struct tag_2 NODE;
struct tag_2{
int value;
NODE *link;
};

缺少了struct tag_2; //这里进行结构体不完整的声明,但是依然能编译成功,这是为什么?难道不是必须的么
[解决办法]
只要最终能找到类型定义即可,不过提前声明是比较好的习惯,这里还有另外的写法:


typedef struct tag_2
{
int value;
struct tag_2 *link;
}NODE;



引用:
看到几个帖子,关于使用typedef实现结构体自引用,模板如下
struct tag_2; //这里进行结构体不完整的声明
typedef struct tag_2 NODE;
struct tag_2{
int value;
NODE *link;
};

但是我看到有一个实际例子
typedef struct tag_2 NODE;
struct tag_2{
int value;
NODE *link;
};

缺少了struct tag_2; //这里进行结构体不完整的声明,但是依然能编译成功,这是为什么?难道不是必须的么

读书人网 >C语言

热点推荐