第五章复杂构造数据类型.ppt
文本预览下载声明
上节回顾;第五章 复杂构造数据类型;学生;学号;; 结构体是由一些逻辑相关, 但数据类型不同的分量组成的一组数据。;3、定义结构体变量的方法;(2). 定义结构体类型同时定义变量
struct student
{ char name[10] ;
int age ;
float s1 , s2 ;
} st1 , st2 ;;(2) 结构体类型可以嵌套定义
例: struct date
{ int year ;
int month ;
int day ;
} ;
struct stud
{ char name[10] ;
struct date birthday ;
float s1 , s2 ;
} ;;4、 结构体变量的引用;struct date
{ int year ;
int month ;
int day ;
} ;
struct stud
{ char name[10] ;
int age ;
struct date birthday;
float s1 , s2 ;
} ;;(2).结构体变量使用说明:
①相同类型的结构体变量可以进行整体赋值 ;② C语言不允许结构体变量整体进行输入和输出,
只能对结构体变量的成员进行输入和输出;③ 可以定义与结构体成员同名的变量,他们之间不会发生混乱。;5、 结构体变量的初始化;;1、 结构体数组的定义
(1). 先定义结构体类型
再定义结构体数组
struct student
{ char name[10] ;
int age ;
float s1 , s2 ;
} ;
struct student st[6] ;; 2、结构体数组的初始化
将每个数组元素的数据用花括号{ } 括起来;(2). 数组元素之间可以整体赋值
也可以将一个元素赋给一个相同类型的结构体变量
struct student x , st[3]={ {“Mary”,21,78,86}, {“Alex”, …} } ;
st[2] = st[0] ;
x = st[1] ; ;例5.1: 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。;例5.2: 按成绩对学生信息进行从高到底的排序;5.1.4 结构体与指针;一、指向结构体变量的指针; 为了使用方便和直观,可以用指向运算符p-num来代替(*p).num
(指向运算符优先级也是最高的)
因此有三种引用结构体成员的方法:
1、结构体变量. 成员名
2、(*p). 成员名
3、p-成员名;2、指向结构体数组的指针;3、用结构体变量和其指针作函数参数;C、用结构体变量的成员分别作参数,用法和普通变量作实参是一样的,属于“值传递”。此时应当注意形参与实参的类型、顺序、个数等要保持一致。此种用法不多见。;5.2 共用体;二.共用体的定义;例2:
union data
{ int i;
char ch;
float f;
};
union data aa,bb;; 共用体变量所占内存的长度等于最长的成员的长度。而不是各成员的长度之和,这一点不同于结构体。
例如前面的例子data类型的变量aa,占据的内存空间为4个字节,而不是2+1+4=7个字节。;三.共用体变量的引用;四.共用体类型数据的特点;(5)共用体变量不能作为函数的参数,也不能作为函数返回值。但可以使用指向共用体变量的指针。;例 :设有若干个人员的数据,其中有学生和教师。
学生的数据包括:姓名、号码、性别、职业、班级。
教师的数据包括:姓名、号码、性别、职业、职务。
现要求把他们放在同一表格中,见图。;数据类型定义:
整体是一个结构体类型;其中第5项可以用共用体来处理。;5.3 枚举类型;例1:
enum weekday{sun,mon,tue,wd,thu,fri,sat };
enum weekday day;;说明:
(1)、C语言中枚举元素按常量处理,它们是有值的。它们的值是系统按其定义顺序自动赋予的 0、1、2、3、4、……。
显示全部