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_的形式构成,用于区别

参考文献

相关解决方案1

以上是关于C数据结构 结构体可以嵌套使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中,怎么样定义结构体数组为全局变量?定义一个无返回值的函数,但是函数有参数可以吗?

c语言中函数返回值可以是数组、字符串和结构体吗?

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

C语言结构体数组 的输入方式

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

c语言结构体数组赋值问题 如果用同一个结构体定义了2个不同的数组1和数组2。可以 数组1=数组2;