结构体是由用户自己定义(设计)的数据类型。
其实就是各种信息的打包。比如说,每个学生都有学号、姓名和成绩,100个学生就有100份这种数据,打包起来整合就会方便很多。
struct [结构体名]{
成员列表
};
比如:
- struct Student{
- char num[10];
- char name[10];
- int score;
- }; //别忘记分号
结构体也可以嵌套定义:
- struct Birthday{
- int year;
- int month;
- int day;
- };
- struct Student{
- char num[10];
- char name[10];
- int score;
- struct Birthday; //嵌套
- };
(1)先定义结构体,再定义结构体变量
- struct Student{ //定义结构体类型
- char num[10];
- char name[10];
- int score;
- struct Birthday;
- }
- int main()
- {
- struct Student p1,p2; //定义两个结构体变量
- ...
- }
也可以把结构体定义放在main()函数中:
- int main()
- {
- struct Student{
- char num[10];
- char name[10];
- int score;
- struct Birthday;
- }; //定义了结构体类型
- struct Student p1,p2; //定义了结构体变量
- ...
- }
(2)定义结构体的同时定义结构体变量
- int main()
- {
- struct Student{
- char num[10];
- char name[10];
- int score;
- struct Birthday;
- }p1,p2; //定义了结构体类型,同时定义了结构体变量
- ...
- }
系统给结构体变量分配空间时,按照成员在结构体的定义顺序依次给每一个成员分配空间。结构体变量所占空间的总字节数等于每个成员所占字节数之和。
定义结构体变量时,可以对其初始化。
- struct Student{
- char num[10];
- cahr name[10];
- int score;
- struct Birthday;
- }p1,p2={"122209","zhangsan",100,1996,12,20};
- struct Student p3={"200010","lisi",20};
若程序中需要若干结构体变量,可以把它们定义成数组。
- struct Student{
- char num[10];
- char name[10];
- int score;
- struct Birthday;
- };
- struct Student s[10];
- //也可以在定义的时候初始化
- struct Student s[10]={{"001","wang",78},{"002","li"}};
- //未初始化的成员和数组元素自动被设置为0