结构体:
结构体是一种构造类型,它是由若干“成员”组成的,其中的每一个成员可以是一个基本数据类型也可以是一个构造类型。
结构体是一种新的类型,需要先进行声明。
形如:
“水果”这种类型并不能使用之前学习过的任何一种类型表示,需要定义一种新的类型,称之为结构体。
声明结构体的形式为:
struct 结构体名
{
成员列表
};
结构体名表示该结构的类型名,括号中的变量构成结构的成员。
结构体变量的定义:
声明一个结构体表示一种新的类型名,并且要定义变量
1、声明结构体,再定义变量:
2、声明结构类型时,定义变量:
定义变量的形式为:
struct 结构体名
{
成员列表;
}变量名列表;
注意:定义的变量不能只有一个,可以定义多个变量。
3、直接定义结构体类型变量:
形式为:
struct
{
成员列表
}变量名列表;
结构体变量的引用:
定义结构体类型变量后,可以引用这个变量,对结构体变量进行赋值、存取或运算。
引用结构变量成员的形式为:
结构变量名,成员名
习题:定义一个表示老师的结构体,结构体的成员有姓名、年龄、教龄;使用该结构体定义一个老师,并赋值,再输出。代码如下:
结构体的初始化:
结构体类型可以在定义结构体变量时指定初始值。
结构体数组:
定义结构体数组:
形式为:
struct 结构体名
{
成员列表;
}数组名:
初始化结构体数组:
初始化结构体数组的形式为:
struct 结构体名
{
成员列表;
}数组名={初始值列表};
习题:某网站双11做促销活动,利用结构体数组编写程序,将销量前5名的信息输出,销量前5名的产品及销售量如下。代码如下:
结构体指针:
指向结构体变量的指针:
指针指向结构体变量的地址,可以使用指针来访问结构体中的成员。
定义结构体指针的形式为:
结构体类型 *指针名;
使用指向结构体变量的指针访问成员有以下两种方法:
第一种方法是使用点运算符引用结构成员。
(*pStruct).成员名
结构体运算可使用点运算符进行引用。*pStruct表示指向的结构体变量。
注意:*pStruct要使用括号。
第二种方法是使用指向运算符引用结构成员。
pStruct ->成员名;
指向结构体数组的指针:
结构体指针变量直接指向结构体数组中的元素,指针变量的值就是该结构体数组元素的地址。
形如:
struct student * pStruct;
pStruct=student;
结构体作为函数参数:
将结构体变量的值作为一个函数的参数。使用结构体作为函数的参数有3中形式。
1、使用结构体变量作为函数参数:
使用结构体变量作为函数的实际参数时,将结构体变量中的内容按顺序传递给形式参数。
形如:
void Display(struct student stu);
2、使用指向结构体变量的指针作为函数参数:
使用结构体变量的指针作为函数参数进行传递内容。
形如:
void Display(struct student *stu);
3、使用结构体变量的成员作为函数参数:
使用此方式为函数传递参数是传值方式传递。
形如:Display(student.fscore[0]);
共用体:
共用体的概念:
共用体也称为联合体,它使几种不同类型的变量存放到同一段内存单元中。在同一时刻只能有一个值。
共用体的大小等于最大内存的大小。
形如:
其中三个圆共同交汇的区域就可以理解为是这三个圆的共用体。
定义共用体的类型变量为:
union 共用体名
{
成员列表
}变量列表;
共用体变量的引用:
共用体引用的形式为:
共用体变量,成员名;
习题:公司员工下班回家,可以坐出租车,可以坐公交车,可以坐地铁,设计一个交通工具的共用体,让员工进行选择。代码如下:
共用体变量的初始化:
在定义共用体变量,初始化的值放在一对大括号中。
枚举类型:
利用关键字enum可以声明枚举类型。使用该类型可以定义枚举类型变量,一个枚举变量包括一组相关的标识符,其中每个标识符都对应一个整数值。
形如:将果盘中的水果名称定义一个枚举类型变量,其中每个标识符都对应一个整数值。
enum Fruits(Watermelon,Mango,Grape,Orange,Apple);
Fruits就是定义的枚举类型变量,在括号中的第一个标识符对应着数值0,第二个对应于1,依此类推。
习题:定义枚举类型,代表一年中的四个季节,给”季节"枚举类型分别赋值,并用整形格式输出四个季节的值。代码如下: