结构体
什么是结构体
-
结构体就是自己自定义的一种"数据类型"
-
使用多个基本数据类型或者其他结构组成的一种新的"数据类型"
-
C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。
在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。
为什么要使用结构体
-
表示一些复杂的信息比如学生的各种"成绩","科目","姓名",游戏的的各种"金币","积分",
"宝石"
单纯用基本数据类型使用不方便,代码的灵活性很低
结构体的定义
struct 结构名 {
成员类型 成员名;
成员类型 成员名;
};
实例
struct student {
int name[16]; //姓名
int age; //年龄
int tel; //电话
};
温馨提示
-
各成员之间要以分号隔开;
-
结构体结尾要以分号结束;
结构体里包含结构体
-
实例
struct student {
int name[16];
int age;
int tel;
};
struct _class {
struct student xiaohua;
struct student heige;
struct student xiaohong;
};
结构体的初始化
struct student {
int name[16];
int age;
int tel;
};
-
方式一
struct student xiaohua = {"xiaohua",18,10086};
-
方式二
strcut student xiaohua ;
strcpy(xiaohua.name,"xiaohua");
xiaohua.age = 18;
xiaohua.tel = 10086;
初始化结构体中包含结构体
struct student {
int name [16];
int age;
int tel;;
};
struct _class {
struct student xiaohua;
struct student xiaohua;
struct student xiaohua;
};
struct _class n1= {
{"xiaohua",18,10086},
{"xiaohong",15,10086},
{"xiaohei",17,10086},
};
温馨提示
strcpy();在vs2019中需要添加_s,如:strcpy_s();
如果不添加会出现一下错误:
-
原因:
-
是因为vs认为函数strcpy();不安全,推荐使用vs自己的函数;
-
结构体的使用
-
c++方式:
-
输出结果:
-
C方式:
-
输出结果:
-
结构体中包含结构体:
-
输出结果为: