一、结构体的实质
结构体实质上就是一种自定义的数据类型,这种数据类型中你可以放很多已有的数据类型,这样一个结构体就是将它里面的所有数据类型变成了一个整体。
二、结构体的空间
我们定义的某个结构体内存空间大小是内部所占内存空间最大的数据类型的整数倍,如:
struct STU{
long long num;
int age;
char name[10];
};
它的内存空间大小就是24.
三、结构体的使用
1、简单定义一个结构体
typedef struct{
double x,y,z;
}Score;
// typedef在此处的作用就是给你现在定义的这个结构体(从struct到}前面的那一大段代码)取个名字,我这个地方去的名字叫做Score
我建议在每次定义结构体的时候都使用typedef给结构体命名,这样方便我们反复调用它
如果我们在结构体当中想要使用我们的结构体类型该怎么办
typedef struct Score{
double x,y,z;
struct Score a;// 直接写成Score a,在这个地方我们没有对struct Score命名,一定要带上struct
}Score;
2、简单应用
案例要求:定义一个结构体,用来储存学生的姓名,年龄,学号,同时,对一个班的学生进行储存
#include <stdio.h>
// 建议将待定结构体定义在main函数外面,这样之后的都能够调用
typedef struct{
char name[10];
int age;
char num[20]; // 学号可能会很长就用字符串来储存
}STU;
const int N = 50;// 假设一个班最多50个人
int main()
{
int n;
scanf("%d", &n); // 用来记录班级有多少个人
STU student[N]; // 结构体数组,始终记住结构体是自定义的数据类型,其他的数据类型可以定义数组,它也可以
for(int i = 1; i <= n; i++)
{
scanf("%s %d %s", &student[i].name, &student[i].age, &student[i].num); // 结构体用“.”作为索引来执行内部的每一个变量
}
for(int i = 1; i <= n; i++)
{
printf("%s %d %s\n", student[i].name, student[i].age, student[i].num);
}
return 0;
}