一、结构体--结构体对齐--结构体数组
1.1.结构体的定义、初始化、结构体数组
有时候需要将不同类型的数据组合为一一个整体,以便于引用。 例如,一名学生有学号、姓
名、性别、年龄、地址等属性,如果针对学生的学号、姓名、年龄等都单独定义一个变量,那么在有多名学生时,变量就难以分清。为此,C语言提供结构体来管理不同类型的数据组合。
声明一个结构体类型的一般形式为:
struct 结构体名
{成员表列};
例如,
struct student
{
int num;char name[20];char sex;
int age;float score;char addr[30];
};
先声明结构体类型,再定义变量名。例如:
struct student student1, student2;
接下来看例1.1。
【例1.1】 结构体的scanf读取和输出。
#include <stdio.h>
struct student{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}; //结构体类型声明,注意最后一定要加分号
int main() {
struct student s = {1001, "mumu", 'M', 20, 85.4, "Shenzhen"}; //定义及初始化
struct student sarr[3];
int i;
printf("%d %s %c %d %f %s \n", s.num, s.name, s.sex, s.age, s.score, s.addr);
for (i = 0; i < 3; i++) {
scanf("%d%s %c%d%f%s", &sarr[i].num, sarr[i].name, &sarr[i].sex,
&sarr[i].age, &sarr[i].score, sarr[i].addr);
}
for (i = 0; i < 3; i++) {
printf("%d %s %c %d %f %s\n", sarr[i].num, sarr[i].name, sarr[i].sex,
sarr[i].age, sarr[i].score, sarr[i].addr);
}
return 0;
}
结构体类型声明要放在main函数之前,这样main函数中才可以使用这个结构体,工作中往往把结构体声明放在头文件中。注意,结构体类型声明最后一定要加分号,否则会编译不通。另外,定义结构体变量时,使用struct studen