08章 结构体类型和联合体类型——C语言程序设计技术.ppt
《08章 结构体类型和联合体类型——C语言程序设计技术.ppt》由会员分享,可在线阅读,更多相关《08章 结构体类型和联合体类型——C语言程序设计技术.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序设计技术程序设计技术n nC C C C语言数据描述和语言数据描述和语言数据描述和语言数据描述和C C C C程序设计初步程序设计初步程序设计初步程序设计初步 n n结构化程序设计根底和结构化程序设计根底和结构化程序设计根底和结构化程序设计根底和C C C C语言的控制结构语言的控制结构语言的控制结构语言的控制结构 n n数组及其应用数组及其应用数组及其应用数组及其应用 n n函数与函数与函数与函数与C C C C程序结构程序结构程序结构程序结构 n n指针与函数指针与函数指针与函数指针与函数 n n指针与数组指针与数组指针与数组指针与数组 n n字符串及其应用字符串及其应用字符串及其应用
2、字符串及其应用 n n结构体类型和联合体类型结构体类型和联合体类型结构体类型和联合体类型结构体类型和联合体类型 n nC C C C语言的文件处理及其应用语言的文件处理及其应用语言的文件处理及其应用语言的文件处理及其应用 n n位运算与枚举类型位运算与枚举类型位运算与枚举类型位运算与枚举类型结构体类型和联合体类型结构体类型和联合体类型 n n结构体数据类型的根本概念结构体数据类型的根本概念结构体数据类型的根本概念结构体数据类型的根本概念 n n结构体数组结构体数组结构体数组结构体数组 n n结构体数据类型与指针的关系结构体数据类型与指针的关系结构体数据类型与指针的关系结构体数据类型与指针的关系
3、n n联合体数据类型的根本概念联合体数据类型的根本概念联合体数据类型的根本概念联合体数据类型的根本概念 8.1 8.1 结构体类型的根本概念结构体类型的根本概念n n结构体类型概述结构体类型概述结构体类型概述结构体类型概述n n 计算机应用中特别是在事务处理中,常常需要计算机应用中特别是在事务处理中,常常需要计算机应用中特别是在事务处理中,常常需要计算机应用中特别是在事务处理中,常常需要将不同的数据组合成为一个有机的整体,这些数据将不同的数据组合成为一个有机的整体,这些数据将不同的数据组合成为一个有机的整体,这些数据将不同的数据组合成为一个有机的整体,这些数据不属于同种数据类型,但这些数据又相
4、互关联,用不属于同种数据类型,但这些数据又相互关联,用不属于同种数据类型,但这些数据又相互关联,用不属于同种数据类型,但这些数据又相互关联,用以描述一个操作对象的各种属性。这种由一些属于以描述一个操作对象的各种属性。这种由一些属于以描述一个操作对象的各种属性。这种由一些属于以描述一个操作对象的各种属性。这种由一些属于不同数据类型的数据组合而成的构造数据类型称为不同数据类型的数据组合而成的构造数据类型称为不同数据类型的数据组合而成的构造数据类型称为不同数据类型的数据组合而成的构造数据类型称为结构体类型。例如结构体类型。例如结构体类型。例如结构体类型。例如,学生登记表。学生登记表。学生登记表。学生
5、登记表。n n 结构体类型的特点结构体类型的特点结构体类型的特点结构体类型的特点n n结构体类型由假设干个数据项组成,其中每一个数结构体类型由假设干个数据项组成,其中每一个数结构体类型由假设干个数据项组成,其中每一个数结构体类型由假设干个数据项组成,其中每一个数据项称为一个结构体成员,它们都属于一种已经定据项称为一个结构体成员,它们都属于一种已经定据项称为一个结构体成员,它们都属于一种已经定据项称为一个结构体成员,它们都属于一种已经定义的数据元素。义的数据元素。义的数据元素。义的数据元素。n n系统并没有预先定义结构体类型,须由设计者事先系统并没有预先定义结构体类型,须由设计者事先系统并没有预
6、先定义结构体类型,须由设计者事先系统并没有预先定义结构体类型,须由设计者事先构造。构造。构造。构造。n n要使用结构体类型数据,必须要先定义结构体类型,要使用结构体类型数据,必须要先定义结构体类型,要使用结构体类型数据,必须要先定义结构体类型,要使用结构体类型数据,必须要先定义结构体类型,然后再定义此种类型的变量。然后再定义此种类型的变量。然后再定义此种类型的变量。然后再定义此种类型的变量。8.1.1 8.1.1 结构体类型和变量的定义结构体类型和变量的定义n n定义结构体类型的一般形式:定义结构体类型的一般形式:定义结构体类型的一般形式:定义结构体类型的一般形式:struct struct
7、struct struct 结构体名结构体名结构体名结构体名 数据类型数据类型数据类型数据类型 结构体成员结构体成员结构体成员结构体成员1 1 1 1;数据类型数据类型数据类型数据类型 结构体成员结构体成员结构体成员结构体成员2 2 2 2;.数据类型数据类型数据类型数据类型 结构体成员结构体成员结构体成员结构体成员n n n n;;struct studentstruct student char num8;char num8;char name20;char name20;char sex;char sex;int age;int age;float Score;float Score;n
8、 n定义结构体类型变量的三种方法定义结构体类型变量的三种方法定义结构体类型变量的三种方法定义结构体类型变量的三种方法n n先定义结构体类型,然后定义变量。先定义结构体类型,然后定义变量。先定义结构体类型,然后定义变量。先定义结构体类型,然后定义变量。struct struct struct struct 结构体名结构体名结构体名结构体名 变量列表;变量列表;变量列表;变量列表;n n定义结构体类型的同时定义结构体变量。定义结构体类型的同时定义结构体变量。定义结构体类型的同时定义结构体变量。定义结构体类型的同时定义结构体变量。struct struct struct struct 结构体名结构体
9、名结构体名结构体名 结构体成员列表;结构体成员列表;结构体成员列表;结构体成员列表;结构体变量列表;结构体变量列表;结构体变量列表;结构体变量列表;n n直接定义结构体变量。直接定义结构体变量。直接定义结构体变量。直接定义结构体变量。struct struct struct struct 结构体成员列表;结构体成员列表;结构体成员列表;结构体成员列表;结构体变量列表;结构体变量列表;结构体变量列表;结构体变量列表;8.1.1 8.1.1 结构体类型和变量的定义结构体类型和变量的定义n n定义结构体类型变量的三种方法定义结构体类型变量的三种方法n n先定义结构体类型,然后定义变量先定义结构体类型
10、,然后定义变量先定义结构体类型,然后定义变量先定义结构体类型,然后定义变量 n n同时定义结构体类型和变量同时定义结构体类型和变量同时定义结构体类型和变量同时定义结构体类型和变量 n n只定义结构体类型变量只定义结构体类型变量只定义结构体类型变量只定义结构体类型变量struct A long number;char name20;int x;float y;struct A a1,a2;struct B long number;char name20;int x;float y;b1,b2;struct long number;char name20;int x;float y;c1,c2;8
11、.1.1 8.1.1 结构体类型和变量的定义结构体类型和变量的定义n n结构体类型的嵌套定义结构体类型的嵌套定义 结构体类型可以嵌套定义,即定义的一个结构体类结构体类型可以嵌套定义,即定义的一个结构体类结构体类型可以嵌套定义,即定义的一个结构体类结构体类型可以嵌套定义,即定义的一个结构体类型的成员中可以有属于另外一个已经定义完成的结型的成员中可以有属于另外一个已经定义完成的结型的成员中可以有属于另外一个已经定义完成的结型的成员中可以有属于另外一个已经定义完成的结构体类型的变量。构体类型的变量。构体类型的变量。构体类型的变量。struct datestruct datestruct datest
12、ruct date int year;int year;int year;int year;int month;int month;int month;int month;int day;int day;int day;int day;struct studentstruct studentstruct studentstruct student long number;long number;long number;long number;char name20;char name20;char name20;char name20;struct date struct date struc
13、t date struct date birthday;birthday;birthday;birthday;int age;int age;int age;int age;char address80;char address80;char address80;char address80;long tel;long tel;long tel;long tel;8.1.1 8.1.1 结构体类型和变量的定义结构体类型和变量的定义n n为已经存在的数据类型取别名为已经存在的数据类型取别名 n n typedef typedef 数据类型名数据类型名 别名;别名;n n例:例:typedef i
14、nt INTEGERtypedef int INTEGER;n n那么:那么:int j,k;int j,k;等价于等价于 INTEGER j,k;INTEGER j,k;n n定义构造类型时为这些类型取别名定义构造类型时为这些类型取别名 n n typedef struct typedef struct 结构体名结构体名n n n n结构体成员列表;结构体成员列表;n n 结构体类型别名;结构体类型别名;n n 注意注意:定义别名后,程序中可使用原类型定义别名后,程序中可使用原类型名或别名定义变量,别名习惯上用大写字母。名或别名定义变量,别名习惯上用大写字母。8.1.2 8.1.2 关键字关
15、键字typedeftypedef的简单应用的简单应用8.1.2 8.1.2 关键字关键字typedeftypedef的简单应用的简单应用struct studentstruct student long number;long number;struct date birthday;struct date birthday;char name20;char name20;int age;int age;char sex;char sex;char address80;char address80;long tel;long tel;;typedeftypedeftypedeftypedef s
16、truct studentstruct studentstruct studentstruct student STUSTU;STUSTU stu1,stu2,stu3 stu1,stu2,stu3struct studentstruct studentstruct studentstruct student 等价于等价于等价于等价于 STUSTUtypedeftypedeftypedeftypedef struct student struct student long number;long number;struct date birthday;struct date birthday;
17、char name20;char name20;int age;int age;char sex;char sex;char address80;char address80;long tel;long tel;STUSTU;STUSTU stu1,stu2,stu3;stu1,stu2,stu3;struct student stu1,stu2;struct student stu1,stu2;struct student stu1,stu2;struct student stu1,stu2;n n使用使用typedeftypedef构造复杂数据类型构造复杂数据类型n n构造指定长度的字符串
18、数据类型构造指定长度的字符串数据类型构造指定长度的字符串数据类型构造指定长度的字符串数据类型typedef char String100;typedef char String100;typedef char String100;typedef char String100;StringStringStringString是字符串数据类型的类型名。是字符串数据类型的类型名。是字符串数据类型的类型名。是字符串数据类型的类型名。String s1;String s1;String s1;String s1;等价于等价于等价于等价于 char s1100;char s1100;char s1100;
19、char s1100;n n构造指针数据类型构造指针数据类型构造指针数据类型构造指针数据类型 typedef int*IP;typedef int*IP;typedef int*IP;typedef int*IP;定义定义定义定义IPIPIPIP为整型的指针类型。为整型的指针类型。为整型的指针类型。为整型的指针类型。IP p1,p2;IP p1,p2;IP p1,p2;IP p1,p2;等价于等价于等价于等价于 int*p1,*p2;int*p1,*p2;int*p1,*p2;int*p1,*p2;例例例例8-1 8-1 8-1 8-1 用用用用typedeftypedeftypedeftyp
20、edef构造指定长度的字符串类型构造指定长度的字符串类型构造指定长度的字符串类型构造指定长度的字符串类型 例例例例8-3 8-3 8-3 8-3 用用用用typedeftypedeftypedeftypedef构造指针数据类型。构造指针数据类型。构造指针数据类型。构造指针数据类型。8.1.2 8.1.2 关键字关键字typedeftypedef的简单应用的简单应用8.1.3 8.1.3 结构体变量的引用和输入输出结构体变量的引用和输入输出n n结构体变量的引用结构体变量的引用 C C C C语言不允许将结构体变量作为整体操作,只能操语言不允许将结构体变量作为整体操作,只能操语言不允许将结构体变
21、量作为整体操作,只能操语言不允许将结构体变量作为整体操作,只能操作它的成员分量。成员分量的引用形式如下:作它的成员分量。成员分量的引用形式如下:作它的成员分量。成员分量的引用形式如下:作它的成员分量。成员分量的引用形式如下:结构体变量名结构体变量名结构体变量名结构体变量名.成员名成员名成员名成员名 例如:例如:例如:例如:stu1.sex stu1.tel stu1.sex stu1.tel stu1.sex stu1.tel stu1.sex stu1.tel n n对于嵌套的结构体变量,访问其成员时应采用逐对于嵌套的结构体变量,访问其成员时应采用逐对于嵌套的结构体变量,访问其成员时应采用逐
22、对于嵌套的结构体变量,访问其成员时应采用逐级访问的方法,直到得到所需访问的成员为止。级访问的方法,直到得到所需访问的成员为止。级访问的方法,直到得到所需访问的成员为止。级访问的方法,直到得到所需访问的成员为止。结构体变量名结构体变量名结构体变量名结构体变量名.一级成员名一级成员名一级成员名一级成员名.二级成员名二级成员名二级成员名二级成员名 例如:例如:例如:例如:stu1.birthday.month stu1.birthday.month stu1.birthday.month stu1.birthday.month n n当有两个同类型结构体变量时,可将一个结构体当有两个同类型结构体变量
23、时,可将一个结构体当有两个同类型结构体变量时,可将一个结构体当有两个同类型结构体变量时,可将一个结构体变量作为一个整体赋值给另外一个结构体变量。变量作为一个整体赋值给另外一个结构体变量。变量作为一个整体赋值给另外一个结构体变量。变量作为一个整体赋值给另外一个结构体变量。特别提示:特别提示:特别提示:特别提示:嵌套的结构体成员分量的数据类型与最后一个成嵌套的结构体成员分量的数据类型与最后一个成嵌套的结构体成员分量的数据类型与最后一个成嵌套的结构体成员分量的数据类型与最后一个成员分量的数据类型一致。员分量的数据类型一致。员分量的数据类型一致。员分量的数据类型一致。例:设有结构体类型及变量定义例:设
24、有结构体类型及变量定义例:设有结构体类型及变量定义例:设有结构体类型及变量定义 struct Astruct A int x;int x;float y;float y;struct B struct B struct A a;struct A a;char c;char c;struct B b;struct B b;struct B b;struct B b;则有:则有:则有:则有:b.a.xb.a.xb.a.xb.a.x 整型变量整型变量整型变量整型变量 b.a.yb.a.yb.a.yb.a.y 实型变量实型变量实型变量实型变量b.cb.cb.cb.c 字符型变量字符型变量字符型变量字符
25、型变量8.1.3 8.1.3 结构体变量的引用和输入输出结构体变量的引用和输入输出n n结构体变量的初始化结构体变量的初始化 n n定义结构体变量的同时初始化:定义结构体变量的同时初始化:n nstruct struct 标识符标识符 变量名变量名=结构体变量成员结构体变量成员值列表值列表;n n struct student stu2,stu1=struct student stu2,stu1=n n5001,1988,12,30,5001,1988,12,30,LiweiLiwei,19,m,19,m,12 12 songlinsonglin,65102621;,65102621;n n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 08章 结构体类型和联合体类型C语言程序设计技术 08 结构 类型 联合体 语言程序设计 技术
限制150内