C语言-结构体
1.1 简介
C 语言提供了struct
关键字,允许自定义复合数据类型,将不同类型的值组合在一起。这样不仅为编程提供方便,也有利于增强代码的可读性。C 语言没有其他语言的对象(object)和类(class)的概念,struct 结构很大程度上提供了对象和类的功能。
结构体定义形式:
struct 结构体名{
结构体所包含的变量或数组
};
struct name {
int meowrain;
int liming;
};
上面示例定义了一个名字的数据类型struct name
,包含两个属性meowrain
和liming
。
注意,作为一个自定义的数据类型,它的类型名要包括
struct
关键字.结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化
1.2 结构体变量
既然结构体是一种数据类型,那么就可以用它来定义变量。例如:
struct stu stu1, stu2;
定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 5 个成员组成。注意关键字
struct
不能少。
在定义结构体的同时定义结构体变量:
struct stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} stu1, stu2;
如果只需要 stu1、stu2
两个变量,后面不需要再使用结构体名定义其他变量,那么在定义时也可以不给出结构体名,如下所示:
struct{ //没有写 stu
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} stu1, stu2;
1.3 结构体成员的获取和赋值
结构体和数组类似,也是一组数据的集合,整体使用没有太大的意义。数组使用下标
[ ]
获取单个元素,结构体使用点号.
获取单个成员。获取结构体成员的一般格式为:
结构体变量名.成员名;
#include <stdio.h>
int main(void) {
struct example{
char *name;//姓名
int age;//岁数
int group;//班级
} stu1;
//给结构体成员赋值
stu1.name = "meowrain";
stu1.age = 18;
stu1.group = 200;
//获取结构体成员的值
printf("%s %d %d",stu1.name,stu1.age,stu1.group);
}
简化写法:
#include <stdio.h>
int main(void) {
struct example{
char *name;//姓名
int age;//岁数
int group;//班级
} stu1 = {"meowrain", 18, 200}; //给结构体成员赋值
//获取结构体成员的值
printf("%s %d %d", stu1.name, stu1.age, stu1.group);
}
不过整体赋值仅限于定义结构体变量的时候,在使用过程中只能对成员逐一赋值,这和数组的赋值非常类似。
还能这么写
#include <stdio.h>
int main(void) {
struct example stu1{
.name = 'meowrain';
.age = 18;
.group = 200;//班级
}; //给结构体成员赋值
//获取结构体成员的值
printf("%s %d %d", stu1.name, stu1.age, stu1.group);
}
以下设置两个结构体变量
#include <stdio.h>
int main(void) {
struct example{
char *name;//姓名
int age;//岁数
int group;//班级
} stu1 = {"meowrain", 18, 200}, stu2 = {"yyds", 19, 300}; //给结构体成员赋值
//获取结构体成员的值
printf("%s %d %d", stu1.name, stu1.age, stu1.group);
printf("%s %d %d",stu2.name,stu2.age,stu2.group);
}