C语言学习笔记17

结构体:

结构体是一种构造类型,它是由若干“成员”组成的,其中的每一个成员可以是一个基本数据类型也可以是一个构造类型。

结构体是一种新的类型,需要先进行声明。

形如:

“水果”这种类型并不能使用之前学习过的任何一种类型表示,需要定义一种新的类型,称之为结构体。

声明结构体的形式为:

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,依此类推。

习题:定义枚举类型,代表一年中的四个季节,给”季节"枚举类型分别赋值,并用整形格式输出四个季节的值。代码如下:

猜你喜欢

转载自www.cnblogs.com/www-bokeyuan-com/p/11224789.html