- 1
- 0
- 约2.19万字
- 约 123页
- 2023-08-08 发布于湖北
- 举报
C语言程序设计( 四);9.1 结构体
9.2 共用体
9.3 枚举类型
9.4 用户定义类型
9.5 程序举例;9.1 结构体; 结构体类型的定义;2.结构体类型中成员项的类型也可以相同,例如:; 结构体类型变量的定义;2.在定义结构体类型的同时定义结构体变量。例如:
struct student {char name[20]; int age; …… char address[20]; }stu1,stu2;;3.不定义结构体类型名,直接定义结构体变量。
一般形式为:
struct
{成员项表列;
}变量名表列;
不定义结构体类型名直接定义结构体变量,该类型只能使用一次,无法再定义同类型的其他变量。
可见:struct
{成员项表列;} 是表示结构体类型的核心。;4. 结构体变量存储单元的字节数
系统为结构体变量开辟一段连续存储单元,其字节数可以用运算符sizeof测得:
sizeof(变量名);
或 sizeof(类型名);
例如:sizeof(stu1);
或sizeof(struct student );结果都是50,存储情况为:;对嵌套结构体类型,例如:
sizeof(struct person1 );结果是58,其存储情况为:;9.1.3 结构体变量的引用;2.结构体变量的赋值、输入和输出
对结构体变量赋常数值、输入和输出只能对根本成员进行。例如:
student.num=1234;
gets();
printf(“%d〞, );
3.同一类型的结构体变量之间可相互赋值〔数组之间不能整体赋值〕
例如: stu1=stu2;;9.1.4 结构体变量的初始化 ;【例9-1】输出结构体数据;9.1.5 结构体数组;(2) 定义结构体类型名的同时定义结构体数组,如:
struct stud_type
{……
}student[50];;2.结构体数组的初始化
结构体数组的一个元素相当于一个结构体变量,结构体数组初始化即顺序对数组元素初始化。如:
struct stud_type student[3]=
{{Wang li, 80101, 18, M, 89.5},
{Zhang Fun, 89102, 19, M, 90.5},
{Li Ling, 89103, 20, F, 98}
}; ;3.结构体数组的引用
(1)除初始化外,对结构体数组赋常数值、输入和输出、各种运算均是对结构体数组元素的根本成员〔相当于普通变量〕进行。结构体数组元素成员表示为:
结构体数组名[下标].成员名
在嵌套的情况下为:
结构体数组名[??标]·结构体成员名·…·结构体成员名·成员名
注意:当结构体数组元素的成员是数组时,假设是字符数组那么可以直接引用,如:stu[i].name ; 假设结构体数组元素的成员是一般数组时,只能引用其元素,如:stu[i].score[j] ;(2) 结构体数组元素可相互赋值
例如:student[1]=student[2];
对于结构体数组元素内嵌的结构体类型成员,情况也相同。如:
student[2].birthday=student[1].birthday;
(3)其他本卷须知也与结构体变量相同,例如:不允许对结构体数组元素或结构体数组元素内嵌的结构体类型成员整体赋〔常数〕值;不允许对结构体数组元素或结构体数组元素内嵌的结构体类型成员整体进行输入输出等。 ; 另外,在处理结构体问题时经常涉及字符或字符串的输入,这时要注意:
①scanf()函数用%s输入字符串遇空格即结束,因此输入带空格的字符串可改用gets函数。
②在输入字符类型数据时往往得到的是空白符〔空格、回车等〕,甚至运行终止,因此常作相应处理,即在适当的地方增加 getchar();空输入语句,以消除缓冲区中的空白符。 ;【例9-2】10人〔人数可以通过宏定义改变〕参加选举,共三个候选人,候选人的根本信息定义在结构体类型当中,包括候选人的标识号iID〔整型〕,候选人的姓名chpName〔字符型数组〕,得票数iCount(整型)。选举时投票即输入三个人的标识号〔iID成员项,分别取1、2、3〕,统计每位候选人得票数。;#define NUMBER 10
struct student
{ int iID;
char chpName[20];
int iCount;
} lead[3
原创力文档

文档评论(0)