一、结构体的概念
1.C语言构造类型
构造数据类型:构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。 也就是说,一个构造
类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。
在C语言中,构造类型有以下几种:
数组类型
结构体类型
共用体(联合)类型
2.结构体的定义
结构体是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。
3.结构类型的意义
结构体可以把功能相同的数据组织起来,存在一起,用的时候方便,而且在调用函数时,若传递参数较多,传一个结构体相对而言简单一些,很多系统自带的函数必须用结构体。
二、结构体的定义和初始化
1.结构体的定义
定义一个结构的一般形式为:
struct 结构名
{
成员表列
};
//定义一个学生的结构
struct stu
{
int num;
char name[20]; //char *name;
char sex;
float score;
};
成员表列由若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类 型说明,其形式为:
类型说明符 成员名;
成员名的命名应符合标识符的书写规定。
2.结构体的几种定义方法
1)先定义结构,在说明结构变量
2)在定义结构类型的同时说明结构变量
- 3)匿名结构体定义结构变量
3.结构变量中成员的访问
成员访问采用“点语法”,一般形式为:**结构变量名.成员名**,例如:stu1.name,stu2.sex。
4.结构体的初始化
- 1)先定义结构体变量,然后初始化
- 2)定义的同时初始化
针对不同的定义和初始化方式,我认为应该根据需要选取适当地方式,个人感觉把结构体定义成全局的结构体,何时需要何时声明结构体变量并初始化比较好,值得注意的是匿名结构体必须在定义结构体的同时声明结构体变量。
三、结构体数组
结构体是用来说明一个事物各个属性的一种数据结构,那么当我们需要用到某个事物的集合的时候,理所应当就会利用到数组了,比如一个班的学生,一个工厂里地工人就分别是学生结构体变量数组和工人结构体变量数组,那么结构体数组怎样定义呢?
1.结构数组概念
数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标
结构变量。在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。如一个班的学生档案,一个车间
职工的工资表等。
2.结构数组定义
定义格式:
struct 结构名
{
成员表列
}数组名[数组长度];
- 1)定义结构体的同时,定义数组
- 2)先定义结构体,后定义数组
3.结构体数组的初始化
代码示例如下:
4.结构体数组的遍历
代码示例如下:
四、结构体的应用
利用结构体实现简单地通讯录功能。
要求:定义一个结构体,包含姓名、电话号码,由用户录入,录入完成后,输出所有录入的联系人。
实例代码如下:
总结:结构体个人感觉很像是类的雏形,也能够描述一类事物的各种属性,但是类显然要比结构体强大的多,结构体没有行为,只有属性,也不能像类一样有继承、多态等等面向对象特性,但是学好结构体确实能为后面更深入的理解类打好基础。