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_的形式构成,用于区别
参考文献
以上是关于c语言结构体嵌套自身存在的问题的主要内容,如果未能解决你的问题,请参考以下文章
C 语言结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )
C 语言结构体 ( 结构体中嵌套一级指针 | 分配内存时先 为结构体分配内存 然后再为指针分配内存 | 释放内存时先释放 指针成员内存 然后再释放结构头内存 )