c 语言结构体中包含结构体 是数组吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c 语言结构体中包含结构体 是数组吗相关的知识,希望对你有一定的参考价值。

c 语言结构体中包含结构体, 可以是结构数组,可以不是。见例子:
#include<stdio.h>
struct PP float x; float y;;
struct LL
int id;
struct PP p; //不是数组
;
struct KK
int id;
struct PP p[3]; //数组
;

int main( )

int i;
struct KK a=3,1.1,1.2,2.1,2.2,3.1,3.2;
struct LL b=1,4.1,4.2;
for (i=0;i<3;i++)
printf("%g %g\n", a.p[i].x,a.p[i].y);
printf("%g %g\n", b.p.x,b.p.y);
return 0;
参考技术A

不是,跟数组没有什么关系。给你个例子:

struct node

    int a;
    char b;
    struct node1
    
        int a1;
        char b1;
    

结构体node中包含结构体node1

望采纳!!!

c语言结构体初始化

我用的是vs2010,按照谭浩强书里的page--297,页,说是可以有:strcut student b =.name="zhang fang";这种初始化形式啊,这里为什么会出错呢?

这个结构体中包含三个变量,num name[20] c
你的结构体初始化只初始化了 name[20]
其余俩个变量没有初始化,所以会报错
你可以这样初始化 struct wo b(1,"jack",'M');
要注意对结构体中所有变量都要初始化,除非这个变量有缺省值追问

为什么都必须初始化,谭浩强说C99标准允许对某一成员初始化,什么是缺省值?

追答

对某一成员初始化 是这样的对某一成员 比如
你的例子不是struct wo b;
b.name="jack";
b.num=23;
这样是可以对某一成员赋值的
但你的赋值是对整体赋值,你想一想你的定义struct wo b(,"jack",);
另外两个变量怎么办! 除非你定义结构体的时候如下定义
struct wo

int num=0; //这就是缺省值
char name[20]="jack";
char c; //这个就没有缺省值,懂了吧

参考技术A 没有吧,我怎么没见过,结构体赋值:struct wo b=10,"aaaa",'b';或是b.num=10;没见过你写的那样 参考技术B 这是c99的语法,你的编译器可能不支持c99或你没有打开相应的编译选项

以上是关于c 语言结构体中包含结构体 是数组吗的主要内容,如果未能解决你的问题,请参考以下文章

Keil中C语言模块化编程时全局变量、结构体处理细节

C结构体中包含函数

c语言结构体初始化

C语言结构体函数的返回值是结构体结构体变量中的信息

C语言结构体函数的返回值是结构体结构体变量中的信息

C语言结构体初始化问题