c语言结构体嵌套自身存在的问题

Posted 帅气的黑桃J

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言结构体嵌套自身存在的问题相关的知识,希望对你有一定的参考价值。

问题描述

typedef struct
{
	A *data;
}A;

最初本人以这种形式构建结构体会发现,这种结构体的构建会出现问题,原因是因为A变量名的定义是在结构体定义结束之后才完成的,而结构体中定义的A这个时候还没有定义,所以这个结构体内无法识别到A

问题前提

1.为了在不在定义的时候使用struct A a而使用A a,则必须要使用typedef进行定义
2.为了在结构体的内部嵌套自身

因此以下只直接给出关于使用typedef定义的解决方案

解决方案

方式:在结构体定义之前先定义其typedef的变量名

typedef struct  _A_ A;
struct _A_
{
	A *data;
};

小技巧:struct定义的结构体名称可以以_data_的形式构成,用于区别

参考文献

相关解决方案1

以上是关于c语言结构体嵌套自身存在的问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言提高:结构体嵌套一级指针

C语言提高:结构体嵌套一级指针

C 语言结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )

C数据结构 结构体可以嵌套使用吗?

结构体嵌套联合体字节对齐问题

C 语言结构体 ( 结构体中嵌套一级指针 | 分配内存时先 为结构体分配内存 然后再为指针分配内存 | 释放内存时先释放 指针成员内存 然后再释放结构头内存 )