1.什么是结构体
结构是多种类型的数据的集合。。且每个结构成员都有名字,因此当使用特定的成员时需要指明结构体成员的名字。
2.结构体的声明
以学生的数据为例:
struct student //student结构名
{
char name; //name结构体成员名
int height; //height结构体成员名
float weight; //weight结构体成员名
char id[20] //id结构体成员名
}part1,part2; //part1,part2结构体变量名
student是结构体的名字称为结构名。
name,height,weight,id都是结构体成员它们可以是不同类型也可以是相同类型。
part1,part2都是定义的结构体变量名,它的类型为,''struct student'.
可以在结构体声明时定义结构体变量名,也可以像下方一样单独定义。
struct student part3;
3.结构体成员的访问
1.结构体成员和”.“运算符
#include <stdio.h>
struct student
{
char name[30];
int height;
float weight;
char id[20];
};
int main()
{
struct student part1 = { "王二",180,75.5,"20241011123456" };
printf("%s\n", part1.name);
printf("%d\n", part1.height);
printf("%f\n", part1.weight);
printf("%s\n", part1.id);
return 0;
}
运行结果 :
可以看到通过”part1.name“这样的方式就能访问到结构体中的name成员 。
2.结构体成员和”->“运算符
struct student
{
char name[30];
int height;
float weight;
char id[20];
};
void stu1(struct student* str)
{
printf("%s\n", str->name);
printf("%d\n", str->height);
printf("%f\n", str->weight);
printf("%s\n", str->id);
}
int main()
{
struct student part1 = { "王二",180,75.5,"20241011123456" };
stu1(&part1);
return 0;
}
运行结果:
可以看到用结构体指针通过”->“运算符也能访问到结构体成员。
4.具有结构体成员的结构体
1.结构体自己调用自己
struct Node
{
int data;
struct Node* next;
};
可以看到结构体中的一个成员为指向它自身的指针,类型为struct Node*
2.结构体嵌套
struct stu1
{
char name[20];
int id;
};
struct stu2
{
char name[20];
int id;
struct stu1 s1;
};
可以看到结构体stu2中有一个成员的类型是struct stur1 它的变量名是s1.