章结构体类型和联合体类型——C语言程序设计技术.pptx
《章结构体类型和联合体类型——C语言程序设计技术.pptx》由会员分享,可在线阅读,更多相关《章结构体类型和联合体类型——C语言程序设计技术.pptx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、结构体类型和联合体类型 n n结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体数组结构体数组 n n结构体数据类型与指针的关系结构体数据类型与指针的关系n n联合体数据类型的基本概念联合体数据类型的基本概念 第1页/共36页8.1 8.1 结构体类型的基本概念结构体类型的基本概念结构体类型概述 计算机应用中特别是在事务处理中,常常需要将不同的数据组合成为一个有机的整体,这些数据不属于同种数据类型,但这些数据又相互关联,用以描述一个操作对象的各种属性。这种由一些属于不同数据类型的数据组合而成的构造数据类型称为结构体类型。例如,学生登记表。结构体类型的特点 结构体类型由若干个数据项组
2、成,其中每一个数据项称为一个结构体成员,它结构体类型由若干个数据项组成,其中每一个数据项称为一个结构体成员,它们都属于一种已经定义的数据元素。们都属于一种已经定义的数据元素。系统并没有预先定义结构体类型,须由设计者事先构造。系统并没有预先定义结构体类型,须由设计者事先构造。要使用结构体类型数据,必须要先定义结构体类型,然后再定义此种类型的变要使用结构体类型数据,必须要先定义结构体类型,然后再定义此种类型的变量。量。第2页/共36页8.1.1 8.1.1 结构体类型和变量的定义结构体类型和变量的定义定义结构体类型的一般形式:struct 结构体名 数据类型 结构体成员1;数据类型 结构体成员2;
3、.数据类型 结构体成员n;;struct studentstruct student char num8;char num8;char name20;char name20;char sex;char sex;int age;int age;float Score;float Score;第3页/共36页定义结构体类型变量的三种方法 先定义结构体类型,然后定义变量。先定义结构体类型,然后定义变量。struct struct 结构体名结构体名 变量列表;变量列表;定义结构体类型的同时定义结构体变量。定义结构体类型的同时定义结构体变量。struct struct 结构体名结构体名 结构体成员列表;
4、结构体成员列表;结构体变量列表;结构体变量列表;直接定义结构体变量。直接定义结构体变量。struct struct 结构体成员列表;结构体成员列表;结构体变量列表;结构体变量列表;8.1.1 8.1.1 结构体类型和变量的定义结构体类型和变量的定义第4页/共36页定义结构体类型变量的三种方法先定义结构体类型,然后定义变量先定义结构体类型,然后定义变量 同时定义结构体类型和变量同时定义结构体类型和变量 只定义结构体类型变量只定义结构体类型变量struct A long number;char name20;int x;float y;struct A a1,a2;struct B long nu
5、mber;char name20;int x;float y;b1,b2;struct long number;char name20;int x;float y;c1,c2;8.1.1 8.1.1 结构体类型和变量的定义第5页/共36页结构体类型的嵌套定义 结构体类型可以嵌套定义,即定义的一个结构体类型的成员中可以有属于另外一个已经定义完成的结构体类型的变量。struct datestruct datestruct datestruct date int year;int year;int year;int year;int month;int month;int month;int mon
6、th;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 struct date struct date birthday;birthday;birthday;birthday;int age;int age;int age;int
7、age;char address80;char address80;char address80;char address80;long tel;long tel;long tel;long tel;8.1.1 8.1.1 结构体类型和变量的定义第6页/共36页为已经存在的数据类型取别名 typedef typedef 数据类型名数据类型名 别名;别名;例:例:typedef int INTEGERtypedef int INTEGER;则:则:int j,k;int j,k;等价于等价于 INTEGER j,k;INTEGER j,k;定义构造类型时为这些类型取别名 typedef stru
8、ct typedef struct 结构体名结构体名 结构体成员列表;结构体成员列表;结构体类型别名;结构体类型别名;注意:定义别名后,程序中可使用原类型名或别名定义变量,别名习惯上用大写字母。8.1.2 8.1.2 关键字typedeftypedef的简单应用第7页/共36页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;
9、int age;char sex;char sex;char address80;char address80;long tel;long tel;;typedeftypedeftypedeftypedef struct studentstruct studentstruct studentstruct student STUSTU;STUSTU stu1,stu2,stu3 stu1,stu2,stu3struct studentstruct studentstruct studentstruct student 等价于等价于等价于等价于 STUSTUtypedeftypedeftypede
10、ftypedef struct student struct 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;STUSTU;STUSTU stu1,stu2,stu3;stu1,stu2,stu3;struct student stu1,stu2;struct student stu1,
11、stu2;struct student stu1,stu2;struct student stu1,stu2;第8页/共36页使用typedef构造复杂数据类型 构造指定长度的字符串数据类型构造指定长度的字符串数据类型typedef char String100;typedef char String100;StringString是字符串数据类型的类型名。是字符串数据类型的类型名。String s1;String s1;等价于等价于 char s1100;char s1100;构造指针数据类型构造指针数据类型 typedef int*IP;定义IP为整型的指针类型。IP p1,p2;等价于
12、int*p1,*p2;例8-1 用typedef构造指定长度的字符串类型 例8-3 用typedef构造指针数据类型。8.1.2 8.1.2 关键字typedeftypedef的简单应用第9页/共36页8.1.3 8.1.3 结构体变量的引用和输入输出结构体变量的引用和输入输出结构体变量的引用 C语言不允许将结构体变量作为整体操作,只能操作它的成员分量。成员分量的引用形式如下:结构体变量名.成员名 例如:stu1.sex stu1.tel 对于嵌套的结构体变量,访问其成员时应采用对于嵌套的结构体变量,访问其成员时应采用逐级访问的方法,直到得到所需访问的成员为逐级访问的方法,直到得到所需访问的成
13、员为止。止。结构体变量名结构体变量名.一级成员名一级成员名.二级成员名二级成员名 例如:例如:stu1.birthday.month stu1.birthday.month 当有两个同类型结构体变量时,可将一个结构当有两个同类型结构体变量时,可将一个结构体变量作为一个整体赋值给另外一个结构体变体变量作为一个整体赋值给另外一个结构体变量。量。第10页/共36页特别提示:特别提示:特别提示:特别提示:嵌套的结构体成员分量的数据类型与最后一个成嵌套的结构体成员分量的数据类型与最后一个成嵌套的结构体成员分量的数据类型与最后一个成嵌套的结构体成员分量的数据类型与最后一个成员分量的数据类型一致。员分量的数
14、据类型一致。员分量的数据类型一致。员分量的数据类型一致。例:设有结构体类型及变量定义例:设有结构体类型及变量定义例:设有结构体类型及变量定义例:设有结构体类型及变量定义 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 实
15、型变量实型变量实型变量实型变量b.cb.cb.cb.c 字符型变量字符型变量字符型变量字符型变量8.1.3 8.1.3 结构体变量的引用和输入输出第11页/共36页结构体变量的初始化 定义结构体变量的同时初始化:struct 标识符 变量名=结构体变量成员值列表;struct student stu2,stu1=5001,1988,12,30,”Liwei”,19,m,”12 songlin”,65102621;stu2=stu1;/两个同类型结构体变量的整体赋值结构体变量的输入输出 结构体变量不能作为一个整体进行输入或输出。只能将结构体变量的成员作为输入输出的对象。例例例例8-58-58-5
16、8-5 结构体变量引用和输入输出示例结构体变量引用和输入输出示例结构体变量引用和输入输出示例结构体变量引用和输入输出示例8.1.3 8.1.3 结构体变量的引用和输入输出第12页/共36页8.1.4 8.1.4 结构体变量作函数参数结构体变量作函数参数结构体变量作为函数参数 结构体变量可以作为函数的参数在函数之间进结构体变量可以作为函数的参数在函数之间进行传递。使用结构体变量作为函数参数时,数行传递。使用结构体变量作为函数参数时,数据的传递仍然是据的传递仍然是“传值方式传值方式”;要求实参和形要求实参和形参的类型须一致。参的类型须一致。实现方式:函数调用时系统为形参变量开辟一实现方式:函数调用
17、时系统为形参变量开辟一段内存单元(按照结构体变量所需要的存储单段内存单元(按照结构体变量所需要的存储单元数)以存放从实参传递过去的各结构体变量元数)以存放从实参传递过去的各结构体变量成员分量的值。成员分量的值。例8-6 结构体变量作函数参数示例struct TEST int x;char ch;实参实参 struct TEST a;struct TEST a;aa.xa.chbb.xb.ch形参形参 struct TEST b;struct TEST b;10aa10第13页/共36页8.1.5 8.1.5 结构体作函数的返回值类型结构体作函数的返回值类型返回结构体类型函数概念结构体类型的数据
18、对象不但能作为函数参数在函数之间传递,还可以作为函数的返回值。当函数的返回值类型是一个结构体类型时,该函数就称为返回结构体类型的函数。函数定义形式 struct struct 标识符标识符 函数名函数名(形式参数表及定义形式参数表及定义)函数的定义和声明部分;函数的定义和声明部分;函数的执行部分;函数的执行部分;例例8-78-7 返回结构体类型函数的示例返回结构体类型函数的示例第14页/共36页结构体类型和联合体类型 n n结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体数组结构体数组 n n结构体数据类型与指针的关系结构体数据类型与指针的关系n n联合体数据类型的基本概念联合体
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 类型 联合体 语言程序设计 技术
限制150内