C语言程序设计(第7章结构体与共用体)

C语言程序设计(第7章结构体与共用体),第1张

C语言程序设计(第7章结构体与共用体),第2张

7.1结构类型变量的定义和引用
在上面介绍的各种报名表中,我们再仔细看看住宿表、成绩表、邮寄地址等。
住宿表由以下项目组成:


这些注册表由C提供的结构类型描述如下:
accommod form:
struct accom mod
{
charname[20];/* name */
char sex;/*性别*/
char job[40];/*职业*/
int年龄;/* Age */
长数字;/*身份证号*/
};
成绩单:
结构分数
{
char grade[20];/* class */
长数字;/*学生ID */
char name[20];/* name */
float OS;/*操作系统*/
float data stru;/*数据结构*/
float compnet;/*计算机网络*/
};
邮寄地址表:
struct addr
{
charname[20];
char部门[30];/*部门*/
字符地址[30];/*地址*/
长框;/*邮政编码*/
长电话;/*电话号码*/
char email[30];/* Email */
};
这一系列不同注册表单的数据结构的描述类型称为结构类型。因为不同的问题有不同的数据成员,也就是说有不同类型的结构有不同的描述。我们也可以理解为结构类型的成员根据问题的不同而不同,可以有任意数量的结构类型描述。
下面是C对于结构类型的定义形式:
struct结构名称
{
成员项表列;
};
使用结构类型,我们可以定义结构类型变量来引用不同变量的成员。

7.1.1结构类型变量的定义
结构类型变量的定义与其他类型变量的定义相同,但由于结构类型需要事先自行定义,因此结构类型变量的定义形式更加灵活。一共三种形式,分别介绍如下:
1)先定义结构类型,再定义结构类型变量:
structstu。/*学生姓名*/
char性别;/*性别*/
long num;/*学号*/
浮动分数[3];/*三科考试成绩*/
};
struct stu student1,student2/*定义结构类型变量*/
structstu student3,student4
使用这种结构类型,可以定义更多这种结构类型的变量。
2)定义结构类型和结构类型变量:
struct data
{
int day;
int月;
int年;
}时间1,时间2;
还可以重新定义以下变量:
struct data time3,time4
使用这种结构类型,您还可以定义更多这种结构类型的变量。

3)直接定义结构类型变量:
struct
{
charname[20];/*学生姓名*/
char性别;/*性别*/
long num;/*学号*/
浮动分数[3];/*三科考试成绩*/
}人员1,人员2;/*定义结构类型变量* /
因为不能记录结构类型,所以除了直接定义结构类型变量之外,无法定义结构类型变量。

7.1.2结构类型变量的引用
我学会了如何定义结构类型和结构类型变量,以及如何正确引用结构类型变量的成员。c规定引用的形式是:
类型变量名>。
如果我们定义了以下结构类型和变量:
struct data
{
int day;
int月;
int年;
}时间1,时间2;
变量time1和time2的引用形式是time1.day、time1.month、time1.year、time2.day、time2.month和time2.yea r,如图7-1所示。

类型的每个成员都以与对应的简单类型变量完全相同的方式使用。

7.1.3结构类型变量的初始化
结构类型变量的初始化稍微复杂一些,因为结构类型变量集合了各种数据类型的成员。
结构类型变量的定义和初始化为:
struct stu/*定义学生结构类型*/
{
char name[20];/*学生姓名* /
char性别;/*性别*/
long num;/*学号* /
浮动分数[3];/*三科考试成绩*/
};
struct stu student = { " Liping ",' f ',970541,98.5,97.4,95 };
以上三种结构类型变量的定义都可以在定义的时候初始化。结构变量初始化后,每个成员的值为:student.name = "liping ",student.sex = 'f ',student.num = 970541,student.sco re[0] = 98.5,student.score[1] = 97.4,student.sco re .其在内存中的存储如图7-2所示。


我们也可以通过c提供的输入输出函数来完成结构类型变量成员的输入输出,由于结构类型变量成员的数据类型通常是不一样的,所以结构类型变量成员要以字符串的形式输入,利用c的类型转换函数将其转换成所需的类型,转换后的函数为:
Intatoi(char * str);str指向的字符串是整数,其函数的返回值是整数。
double atof(char * str);str指向的字符串是实数,其函数返回值是双精度实数。
long atol(char * str);str指向的字符串是长整数,其函数的返回值是长整数。
要使用上述函数,应该包含头文件“stdlib.h”。
以上结构类型变量成员的输入一般形式为:
char temp[20];
gets(student . name);/*输入姓名*/
student . sex = getchar();/*输入性别*/
获取(temp);/*输入学号*/
student . num = atol(temp);/*转换为长整数*/
for(I = 0;I < 3;I ++) /*输入三科成绩*/
{
gets(temp);
student . score[I]= atoi(temp);
}
对结构类型变量成员的输出也必须由每个成员独立输出,但结构类型变量不能以整体的形式输入输出。
C允许您为特定问题定义各种结构类型,甚至是嵌套结构类型。
结构数据
{
int day;
int口;
int年;
};
struct stu
{
char name[20];
结构数据生日;/*出生日期,嵌套结构类型*/
long num;
}人;

这种结构类型的变量成员的引用形式是:person.name,person.birthday.day,person。生日。月份,人。生日、年份、人数

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C语言程序设计(第7章结构体与共用体)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情