草7章结袍体、联合体和枚举类乳 本章导读 结构体、联合体、枚举类型都是用户自己定义的数据类型, 这些类型的数据是用户根据实际需要来组织的。结构体和 联合体都是构造类型的数据,枚举类型是基本类型的数据 程 序 本章主要知识点 (1)结构体类型数据的定义,结构变量的说明及引用方法 结构指针的定义、使用以及结构指针在C程序中的应用 链表的建立、瑜出、删除与插入等操作 (2)联合体类型数据的定义,联合变量的说明及引用方法 60 (3)枚举类型数据的定义,枚举变量的说明及引用方法 (4)了解自定义类型的概念和类型定义方法及应用 环 境 巡回本书日录
本章导读 结构体、联合体、枚举类型都是用户自己定义的数据类型, 这些类型的数据是用户根据实际需要来组织的。结构体和 联合体都是构造类型的数据,枚举类型是基本类型的数据。 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回本书目录 第7章 结构体、联合体和枚举类型 本章主要知识点 (1)结构体类型数据的定义,结构变量的说明及引用方法 结构指针的定义、使用以及结构指针在C程序中的应用—— 链表的建立、输出、删除与插入等操作 (2)联合体类型数据的定义,联合变量的说明及引用方法 (3)枚举类型数据的定义,枚举变量的说明及引用方法 (4)了解自定义类型的概念和类型定义方法及应用
第7章结构体、联合体和枚举类乳 7.1结构体 言72联合体 7,3枚举类烈 74自定义类纸 7.5缭合实训 60 环 境 返回本章导读
第7章 结构体、联合体和枚举类型 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回本章导读 7.1 结构体 7.2 联合体 7.3 枚举类型 7.4 自定义类型 7.5 综合实训
7.1结构体 71.1结构体与结构变量 712结构成员的引用 71.3结构数组 60 7.14结构指针与链表
《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回本章目录 7.1 结构体 7.1.1 结构体与结构变量 7.1.2 结构成员的引用 7.1.3 结构数组 7.1.4 结构指针与链表
71.1绪构体与结构变量 “结构体”是一种构造类型,是由数目固定,类型相同或不同的 若干有序变量组成的集合。组成结构体的每个数据都称为结构 体的“成员”,或称“分量”。 1.结构体类型的产明 2,结构变量的定义 60 3,结构体类烈与结构变量 环 境 返回本节目录
7.1.1 结构体与结构变量 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回本节目录 “结构体”是一种构造类型,是由数目固定,类型相同或不同的 若干有序变量组成的集合。组成结构体的每个数据都称为结构 体的“成员”,或称“分量”。 返回本节目录 1.结构体类型的声明 2.结构变量的定义 3.结构体类型与结构变量
1。结袍体类乳的声旷 声明一个结构体类型的一般形式为: struct; 成员名的命名应符合C语言标识符的书写规定,结构体成员名可 与程序中其它变量同名,互不干扰。 60 环 境 返回7.1.1目录
1.结构体类型的声明 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回7.1.1目录 声明一个结构体类型的一般形式为: struct { 成员表列(也称为域表) }; 应注意在括号后的分号是不可少的。成员表列由若干个成员组 成,每个成员都是该结构体的一个组成部分。对每个成员也必须 作类型说明,其形式为: ; 成员名的命名应符合C语言标识符的书写规定,结构体成员名可 与程序中其它变量同名,互不干扰
2.结袍变量的定义 对于已经声明的结构体类型,就可有对应于该类型的“结构类型变量” 简称为“结构变量”。定义结构变量有以下三种方法: 据言程设计 (1)先声明结构体类型,再定义结构变量 即在先前声明的结构体类型后加上以下形式: struct<结构体名〉<结构变量表列 (2)在声明结构体类型的同时定义结构变量 即被定义的结构变量直接在结构体类型声明的“}”后给出。一般形式为: struc t<结构体名 {〈成员表列〉 }〈结构变量表列 (3)直接定义结构变量 60 即省略结构体名。一般形式为: struc t {<成员表列 环 }<结构变量表列 境 返回7.1.1目录
2.结构变量的定义 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回7.1.1目录 对于已经声明的结构体类型,就可有对应于该类型的“结构类型变量” , 简称为“结构变量”。定义结构变量有以下三种方法: (1)先声明结构体类型,再定义结构变量 即在先前声明的结构体类型后加上以下形式: struct ; (2)在声明结构体类型的同时定义结构变量 即被定义的结构变量直接在结构体类型声明的“}”后给出。一般形式为: struct { 〈成员表列〉 }〈结构变量表列>; (3)直接定义结构变量 即省略结构体名。一般形式为: struct { };
3.结构体类型与绪构变量 结构体类型与结构变量的最大区别在于:结构变量占有一定的内 存空间,而结构体类型只是一种数据类型的结构描述,并不占用内 据言程设计 存空间。 struct box i float length float width float height 它表明 struct box结构体类型由大括号中所列的一些数据项组成,共 需占用4x3=12个字节。 60 在此之后,若进行结构变量的定义如: struct box box 1; 表明box1为 struct box结构体类型变量,它占用了12个字节的内存单 环 境 返回7.1.1目录
3.结构体类型与结构变量 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回7.1.1目录 结构体类型与结构变量的最大区别在于:结构变量占有一定的内 存空间,而结构体类型只是一种数据类型的结构描述,并不占用内 存空间。 struct box { float length; float width; float height; }; 它表明struct box结构体类型由大括号中所列的一些数据项组成,共 需占用4x3=12个字节。 在此之后,若进行结构变量的定义如:struct box box1; 表明box1为struct box结构体类型变量,它占用了12个字节的内存单 元
7.12结构成员的引用 对结构变量的访问是通过对结构变量各个成员的访问来进行的, 结构变量成员描述为: 在引用中应遵循以下原则: 程 (1)如果成员本身又是一个结构体类型时,则必须逐级找到最 序 低一级的成员才能使用。 (2)对成员变量的使用与普通变量完全相同,可根据其类型进 行相应的运算 (3)可以引用成员的地址,也可以引用结构体变量的地址。 (4)允许将一个结构变量直接赋值给另一个具有相同结构的结 构变量。 白 (例7.1 环 境 返回本节目录
7.1.2 结构成员的引用 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回本节目录 对结构变量的访问是通过对结构变量各个成员的访问来进行的, 结构变量成员描述为:. 在引用中应遵循以下原则: (1)如果成员本身又是一个结构体类型时,则必须逐级找到最 低一级的成员才能使用。 (2)对成员变量的使用与普通变量完全相同,可根据其类型进 行相应的运算。 (3)可以引用成员的地址,也可以引用结构体变量的地址。 (4)允许将一个结构变量直接赋值给另一个具有相同结构的结 构变量。 【例7.1】
例71(1) 厂【例71】利用结构体对三名学生的学号、姓名、性别、成绩进行输入与输出。 程序名为171cpp #include stdio. h" struct stu i long int num; char name 程 [20]; char sex 序 float score |} student l, student2=(96002 Zhang hong,Ww.8; student3/*对 student2初始化* main( student l, num=960001 /*对 student1各成员赋值*/ scanf("%s",student 1 name) student l sex=M 白 student 1 score=65 student=student1 *对 student3直接赋值 环 境 返回7.1.2目录
例7.1(1) 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回7.1.2目录 【例7.1】利用结构体对三名学生的学号、姓名、性别、成绩进行输入与输出。 程序名为l7_1.cpp。 #include "stdio.h" struct stu { long int num; char name[20]; char sex; float score; }student1,student2={960002,"Zhang hong li",'W',98},student3;/*对student2初始化*/ main() { student1.num=960001; /*对student1各成员赋值*/ scanf("%s",student1.name); student1.sex='M'; student1.score=65; student3=student1; /*对student3直接赋值*/
例71(2接上页) f printf("\n%ld\t%20slt%c t%f", student 1. num, student 1 name, studentl sex, student I score) printf("nold%020sIt%cIt%of", student2 num, student2 name, student2sex 语 student2 score) printf("n%old\to020sltocIt%of", student3 num, student3 name, student3sex 程 student3 score); 序设计 运行情况如下: 输入: Lilin<CR 960001 Lilin M 65 960002 Zhang hong li w 98 960001 Lili 60 程序演刁 环 境 返回7.1.2目录
例7.1(2接上页) 《 C 语 言 程 序 设 计 》(Visual C++ .6 0 环 境 ) 返回7.1.2目录 printf("\n%ld\t%20s\t%c\t%f",student1.num,student1.name,student1.sex, student1.score); printf("\n%ld\t%20s\t%c\t%f",student2.num,student2.name,student2.sex, student2.score); printf("\n%ld\t%20s\t%c\t%f",student3.num,student3.name,student3.sex, student3.score); } 运行情况如下: 输入:Lilin 960001 Lilin M 65 960002 Zhang hong li W 98 960001 Lilin M 65 程序演示