C数据结构 结构体可以嵌套使用吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C数据结构 结构体可以嵌套使用吗?相关的知识,希望对你有一定的参考价值。
typedef struct LNode int data; struct LNode *next;LNode,*LinkList;//链表定义typedef struct Sqlist int *elem; int length; int listsize;SqList;这样嵌套使用对吗?
typedef 只是给类型起个别名,上面两个定义完全可以。因为struct LNode和LNode都代表结构int data; struct LNode *next;
在c中,即使同名,但结构struct和类型名还是可区分的,因此定义不出错。 参考技术A 人家都说是C了,C里哪有class
可以嵌套的,完全没问题,数据结构也是一种数据类型.结构体就是多个数据类型的集合,有何不可 参考技术B 不太理解为何要这样做,这种写法看起来不太好看。如果需要嵌套的话,建议你在class里面去嵌套struct,这样会比较好,也完全能解决你的问题。
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 语言结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )