定义
关键字:struct
struct 结构体名
{
结构体所包含的变量或数组
}; //结尾为分号
-
struct stu{
-
char *name; //姓名
-
int num; //学号
-
int age; //年龄
-
char group; //所在学习小组
-
float score; //成绩
-
};
定义结构体变量
既然结构体是一种数据类型,那么就可以用它来定义变量。例如:
struct stu stu1, stu2;
定义了两个变量 stu1 和 stu2,它们都是 stu 类型,都由 5 个成员组成。注意关键字struct
不能少。
stu 就像一个“模板”,定义出来的变量都具有相同的性质。也可以将结构体比作“图纸”,将结构体变量比作“零件”,根据同一张图纸生产出来的零件的特性都是一样的。
也可定义的同时定义变量
-
struct stu{
-
char *name; //姓名
-
int num; //学号
-
int age; //年龄
-
char group; //所在学习小组
-
float score; //成绩
-
} stu1, stu2;
理论上讲结构体的各个成员在内存中是连续存储的
逐一赋值
-
stu1.name = "Tom"; // 结构体名.成员名=值
-
stu1.num = 12;
-
stu1.age = 18;
-
stu1.group = 'A';
-
stu1.score = 136.5;
整体赋值(整体赋值仅限于定义结构体变量的时候,在使用过程中只能对成员逐一赋值,这和数组的赋值非常类似)
-
struct{
-
char *name; //姓名
-
int num; //学号
-
int age; //年龄
-
char group; //所在小组
-
float score; //成绩
-
} stu1, stu2 = { "Tom", 12, 18, 'A', 136.5 };
结构体数组
.定义
-
struct stu{
-
char *name; //姓名
-
int num; //学号
-
int age; //年龄
-
char group; //所在小组
-
float score; //成绩
-
}class[5]; //数组名和长度
.赋值
-
struct stu{
-
char *name; //姓名
-
int num; //学号
-
int age; //年龄
-
char group; //所在小组
-
float score; //成绩
-
}class[5] = {
-
{"Li ping", 5, 18, 'C', 145.0},
-
{"Zhang ping", 4, 19, 'A', 130.5},
-
{"He fang", 1, 18, 'A', 148.5},
-
{"Cheng ling", 2, 17, 'F', 139.0},
-
{"Wang ming", 3, 17, 'B', 144.5}
-
};
.变量引用和修改
结构体数组的使用,例如,获取 Wang ming 的成绩:
class[4].score;
修改 Li ping 的学习小组:
class[0].group = 'B';