C语言struct结构体内如何声明当前正在定义的同类型变量
C语言结构体声明自身类型成员的解决方案
你给出的代码无法正常编译,原因是结构体定义完成前属于「不完整类型」,编译器无法确定其内存占用大小,直接声明该类型的实例作为成员时,编译器无法计算整个结构体的总大小,会直接抛出编译错误。
正确实现方式
只能使用该结构体类型的指针作为成员:指针的内存占用是固定的(32位环境下占4字节、64位环境下占8字节),编译期可以确定大小,不会报错。
修改后可运行的代码示例:
// 提前声明结构体和对应的typedef别名 typedef struct var var; struct var { int a; var *b; // 替换为自身类型的指针即可正常编译 };
常见使用场景示例(单向链表节点定义):
typedef struct ListNode ListNode; struct ListNode { int value; // 节点存储的数据 ListNode *next; // 指向链表下一个节点的指针 };
内容的提问来源于stack exchange,提问作者Ken Za
相关产品推荐
相关产品推荐

