结构体是一种构造数据类型(也被称为复杂数据类型或聚合数据类型),有若干个不同类型的变量(数据)组成。每个变量都是结构体的成员,每个成员可以是基础数据类型,也可以是构造类型
结构体声明不会分配空间,结构体类型声明只是说明一种数据类型,并不是变量定义
结构体定义:
结构体是用来存放不同类型的数据的。定义结构体的一般形式为:
struct 结构体名{
结构体所包含的变量或数组
};
实例
struct stu
{
char *name;//名字
int num;//学号
int age;//年龄
char *group;//所在小组
float score;//成绩
};
stu 为结构体名,它包含了 5 个成员,分别是 name、num、age、group、score。结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化。
注意大括号后面的分号;不能少,这是一条完整的语句。
结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。
成员的获取和赋值:
在C语言中,使用点号.来获取结构体中的一个成员,一般格式为:结构变量名.成员名
例如:
stu1.name; //第一个学生的姓名
stu2.score; //第二个学生的成绩
获取成员后,就可以对该成员进行赋值了,例如:
stu1.name = "Tom";
stu2.score = 90.5;
完整示例:
struct stu {//stu 结构体名字
char *name;//名字
int num;//学号
int age;//年龄
char group;//所在小组
float score;//成绩
}stu1,stu2;//stu1,stu2是结构体变量
stu1.name = "Tom";
stu1.num = 123456789;
stu1.age = 15;
stu2.group = 'A';
stu2.score = 999.12345;
printf("%s的学号是%d,年龄%d,在%s组,总成绩是%.2f!",stu1.name,stu1.num,stu1.age,stu2.group,stu2.score);
运行结果:Tom的学号是123456789,年龄15,在A组,总成绩是999.12!