struct s1
{
int x1;
struct s1 *x2; /*正确,成员是指针型变量,数据类型可以是本结构体*/
struct s1 *x3[6]; /*正确,成员是指针型,……可以是……*/
struct s1 x4; /*错误,成员是变量,不能是……*/
struct s1 x5[2]; /*错误,成员是数组,不能使……*/
};
注释不懂,是在解释语句的意思,还是在判断语句的意思。如果是判断,为什么是指针就正确?为什么是变量就错误?
明白了,又出现两个问题。
(1)struct s1
{
struct si *x2;
}
这个是不是说,x2里存放着struct s1,s1的内存是有限的?
(2)数组是不是同一道理?即数组里存放结构,结构里还是数组,所以导致死循环?
除了这两个问题,结构体的嵌套还有什么值得注意的地方么?
(1)struct s1
{
struct si *x2;
}
这个是不是说,x2里存放着struct s1,s1的内存是有限的?
这个只是说你定义了一个指针,这个指针指向的空间类型是struct s1类型的结构体.struct s1类型的结构体占用的内存空间就是4字节,因为里面就一个指针类型的成员,所以占用空间上固定的.
2,
数组是不是同一道理?即数组里存放结构,结构里还是数组,所以导致死循环?
对,因为你这个数组里存放的是struct s1类型的结构体,而你这个结构体的大小是没办法知道的,
至于结构体的嵌套,个人觉得没什么特别注意的.
其他提醒你的是,对于结构体的认识,你把它就当作一普通的数据类型对待就行了.
比如说,int类型,在内存中占几个字节,这个是别人提前规定好的,你直接用就行.
而结构体只是你自己根据自己需要,自己定义了一个新的类型,这个新类型和int,float都是一种数据类型而已,因此结构体,数组等也被称作用户自定义类型.
嵌套结构体问题。
2,而当把这个结构体的本身作为自身变量的时候,你就无法知道这个变量具体占用的内存空间是多少,所以在给变量分配空间的时候就无法分配,所以说错误,(就好比你定义一个数组,一定要指定这个数组有多少个元素,要不然计算机也没办法知道你这个数组到底需要多少内存空间,它就无法分配内存)当结构体本身作为自身变量的...
嵌套的结构体赋值的问题
这个问题跟外层结构成员或者嵌套结构成员无关。在用scanf函数输入数据的时候,需要把要赋值的变量的地址传给scanf函数。结构成员name是个数组,不带下标的数组名就是数组的地址,所以scanf("%s",c->name)是正确的。而嵌套结构的成员k是个整型变量,在输入的时候要在前面加上&来取得它的地址,所以要写成...
C语言 结构体的嵌套
classroom结构体包含student数组,表示班级和学生信息。结构体嵌套需考虑内存浪费和性能 结构体嵌套形成复杂数据结构,但需权衡嵌套程度和性能。学习嵌入式物联网时,正确路线和专业内容是关键。提供150多G学习资源,覆盖嵌入式物联网学习内容,免费领取,助力学习。
请教各位大侠,c语言结构体嵌套的问题、。
C语言实现不了你的想法。结构本身是没有值的,只有结构成员才有值。typedef struct{ float H;float L;float actual;}physic;typedef struct{ physic v;physic p;}thing;thing RTU;RTU.v.H=123.456;RTU.v.L=0;RTU.v.actual=100;
结构体的嵌套问题.
这个应该是OS系统对内存空间初始化的过程,主要是对内存空间进行分块操作,从代码中可以看到,其实每一个结构体就是一个为内存分的一个特定区域.不知道说的对不对,还请高手们指正一下.
嵌套结构体的赋值问题
刚开始创建List时系统为它分配了sizeof(List)大小的空间,但是里面的数据是垃圾数据,你可以手动给L赋值,方法非常简单,使用DOT(.)操作符,比如给s[0]赋值,就用L.s[0].sno = ;L.s[0].sname[0]等,每一级引用之间用DOT(.)连接,再通过赋值操作进行!
vb.net中嵌套结构体传值复制的问题
因为数组是引用类型,所以直接赋值会出现这种情况 可以在kb=k后单独复制数组 kb.rr=k.rr.Clone 这样两个数组就是独立的了 之所以先kb=k是为了当其含有多个成员时值型成员可以直接复制,只需Clone引用类型的就行了
【c语言共用体】里面嵌套有结构体,求详解。高分悬赏。谢谢
共用体就是享用同一块内存 在此例中 e的大小为最长元素的大小,也就是结构体out的大小,共两个int,假设此处int为4字节 e.c和e.d和e.out.a占用同一块内存,即低4字节的内存,a.out.b占用高4字节内存 然后e.c=1;e.d=2;e.c和e.d和e.out.a都为2 e.out.a=e.c*e.d = 2*2 =...
C语言结构体嵌套问题
我们定义一个新的结构体,就像定义一个新的数据类型一样,所以你的author和book都是一种结构体,而不是具体的变量,所以还要加一步(就像你第二个定义里面的struct author member一样):struct book books[N];后面用books这个数组变量就可以了(看你后面是想要个数组的)。
结构体可以嵌套定义吗
类定义中嵌套结构体是可以的,这里要分几种情况说明:对于已经声明的(在类外)结构体类型,在类定义内嵌套结构体变量,没有任何问题。在类定义内直接定义结构体类型并同时声明结构体变量,也是可以的,但这个结构体类型无法在类外使用。在类内只定义结构体类型,而不同时声明结构体变量是不可以的(这个...