一、结构体的概念和定义
1. 为什么要定义结构体
结构体是由用户自己定义(设计)的数据类型。
其实就是各种信息的打包。比如说,每个学生都有学号、姓名和成绩,100个学生就有100份这种数据,打包起来整合就会方便很多。
2. 结构体定义的格式
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. 结构体变量的定义
(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; //定义了结构体类型,同时定义了结构体变量...
}
2. 结构体变量的空间分配
系统给结构体变量分配空间时,按照成员在结构体的定义顺序依次给每一个成员分配空间。结构体变量所占空间的总字节数等于每个成员所占字节数之和。
三、结构体变量的初始化
定义结构体变量时,可以对其初始化。
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