结构体类型和联合体类型.ppt

上传人:wuy****n92 文档编号:80505231 上传时间:2023-03-23 格式:PPT 页数:49 大小:278KB
返回 下载 相关 举报
结构体类型和联合体类型.ppt_第1页
第1页 / 共49页
结构体类型和联合体类型.ppt_第2页
第2页 / 共49页
点击查看更多>>
资源描述

《结构体类型和联合体类型.ppt》由会员分享,可在线阅读,更多相关《结构体类型和联合体类型.ppt(49页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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结构体数据类型的简单应用结构体数据类型的简单应用结构体数据类型的简单应用结构体数据类型的简单应用单链表单链表单链表单链表 n n联合体数据类型的基本概念联合体数据类型的基本概念联合体数据类型的基本概念联合体数据类型的基本概念 结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体数据类型的基本概念结构体数据类型的基本概念结构体数据类型的基本概念结构体数据类型的基本概念n n问题的提出问题的提出问题的提出问题的提出在实际的计算机应用问题中特别是在事务处理中,常常需在实际的计算机应用问题中特别是在事务处理中,常常需在实际的计算机应用问题中特别是在事务处理中,常常需在实际的计算机应用问

4、题中特别是在事务处理中,常常需要将不同的数据组合成为一个有机的整体,形成一种能够要将不同的数据组合成为一个有机的整体,形成一种能够要将不同的数据组合成为一个有机的整体,形成一种能够要将不同的数据组合成为一个有机的整体,形成一种能够既表示出各个数据又表示出这些数据之间关系的构造数据既表示出各个数据又表示出这些数据之间关系的构造数据既表示出各个数据又表示出这些数据之间关系的构造数据既表示出各个数据又表示出这些数据之间关系的构造数据类型。类型。类型。类型。n n解决办法解决办法解决办法解决办法在在在在C C C C程序设计语言中提供了构造这种数据类型的能力,称程序设计语言中提供了构造这种数据类型的能

5、力,称程序设计语言中提供了构造这种数据类型的能力,称程序设计语言中提供了构造这种数据类型的能力,称这种由一些属于不同数据类型的数据组合而成的构造数据这种由一些属于不同数据类型的数据组合而成的构造数据这种由一些属于不同数据类型的数据组合而成的构造数据这种由一些属于不同数据类型的数据组合而成的构造数据类型为结构体类型。类型为结构体类型。类型为结构体类型。类型为结构体类型。n结构体类型的特点:结构体类型的特点:n结构体类型由若干个数据项组成,其中的每一个数据结构体类型由若干个数据项组成,其中的每一个数据项称为一个结构体成员,它们都属于一种已经有定义项称为一个结构体成员,它们都属于一种已经有定义数据类

6、型;数据类型;n系统并没有预先定义结构体类型,凡要使用结构体类系统并没有预先定义结构体类型,凡要使用结构体类型数据则需要在程序中进行定义。可以根据不同的需型数据则需要在程序中进行定义。可以根据不同的需要在程序中定义若干个结构体类型;要在程序中定义若干个结构体类型;n一个特定的自定义结构体类型只在其定义存在的源程一个特定的自定义结构体类型只在其定义存在的源程序中起作用,在其他源程序中则不能使用;序中起作用,在其他源程序中则不能使用;n要使用结构体类型数据,必须要先定义结构体类型,要使用结构体类型数据,必须要先定义结构体类型,然后再定义此种类型的变量;然后再定义此种类型的变量;结构体数据类型的基本

7、概念结构体数据类型的基本概念 n n结构体类型的定义结构体类型的定义结构体类型的定义结构体类型的定义struct struct struct struct 标识符标识符标识符标识符 数据类型名数据类型名数据类型名数据类型名 结构体成员结构体成员结构体成员结构体成员1 1 1 1;数据类型名数据类型名数据类型名数据类型名 结构体成员结构体成员结构体成员结构体成员i i i i;数据类型名数据类型名数据类型名数据类型名 结构体成员结构体成员结构体成员结构体成员n n n n;;式中:式中:式中:式中:struct struct struct struct 标识符标识符标识符标识符一起构成结构体数据

8、类型的类型名;一起构成结构体数据类型的类型名;一起构成结构体数据类型的类型名;一起构成结构体数据类型的类型名;数据类型名数据类型名数据类型名数据类型名 结构体成员结构体成员结构体成员结构体成员i i i i;确定了结构体类型中的一个结构确定了结构体类型中的一个结构确定了结构体类型中的一个结构确定了结构体类型中的一个结构体成员,其定义形式如前面的变量定义;体成员,其定义形式如前面的变量定义;体成员,其定义形式如前面的变量定义;体成员,其定义形式如前面的变量定义;uu一个结构体类型定义完成后这种数据类型就存在于一个结构体类型定义完成后这种数据类型就存在于一个结构体类型定义完成后这种数据类型就存在于

9、一个结构体类型定义完成后这种数据类型就存在于C C C C源程源程源程源程序中,在同一个源程序中可以定义该种数据类型的变量。序中,在同一个源程序中可以定义该种数据类型的变量。序中,在同一个源程序中可以定义该种数据类型的变量。序中,在同一个源程序中可以定义该种数据类型的变量。struct student long id;char name20;int age;char sex;char address80;long tel;结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体类型的定义结构体类型的定义结构体类型的定义结构体类型的定义n n定义结构体类型变量的方法定义结构体类型变量的方法

10、定义结构体类型变量的方法定义结构体类型变量的方法 n n先定义类型,然后定义变量。其形式为:先定义类型,然后定义变量。其形式为:先定义类型,然后定义变量。其形式为:先定义类型,然后定义变量。其形式为:struct struct struct struct 标识符标识符标识符标识符 变量列表变量列表变量列表变量列表n n定义结构体类型时同时定义结构体变量。其形式为:定义结构体类型时同时定义结构体变量。其形式为:定义结构体类型时同时定义结构体变量。其形式为:定义结构体类型时同时定义结构体变量。其形式为:structstructstructstruct 标识符标识符标识符标识符 结构体成员列表;结构

11、体成员列表;结构体成员列表;结构体成员列表;结构体变量列表;结构体变量列表;结构体变量列表;结构体变量列表;n n直接定义结构体变量。其一般形式为直接定义结构体变量。其一般形式为直接定义结构体变量。其一般形式为直接定义结构体变量。其一般形式为:struct struct struct struct 结构体成员列表;结构体成员列表;结构体成员列表;结构体成员列表;结构体变量列表;结构体变量列表;结构体变量列表;结构体变量列表;结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体类型的定义结构体类型的定义结构体类型的定义结构体类型的定义n n定义结构体类型变量举例定义结构体类型变量举例定

12、义结构体类型变量举例定义结构体类型变量举例n n先定义类型,然后定义变量先定义类型,然后定义变量先定义类型,然后定义变量先定义类型,然后定义变量 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 numbe

13、r;char name20;int x;float y;c1,c2;结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体类型的定义结构体类型的定义结构体类型的定义结构体类型的定义n n结构体类型的嵌套定义结构体类型的嵌套定义结构体类型的嵌套定义结构体类型的嵌套定义结构体类型可以嵌套定义,即定义的一个结构体类型的成结构体类型可以嵌套定义,即定义的一个结构体类型的成结构体类型可以嵌套定义,即定义的一个结构体类型的成结构体类型可以嵌套定义,即定义的一个结构体类型的成员中可以有属于另外一个已经定义完成的结构体类型的变员中可以有属于另外一个已经定义完成的结构体类型的变员中可以有属于另外一个已经

14、定义完成的结构体类型的变员中可以有属于另外一个已经定义完成的结构体类型的变量。量。量。量。struct datestruct date int year;int year;int month;int month;int day;int day;struct studentstruct student long number;long number;char name20;char name20;struct date struct date birthday;birthday;int age;int age;char address80;char address80;long tel;long

15、 tel;结构体数据类型的基本概念结构体数据类型的基本概念 n n关键字关键字关键字关键字typedeftypedeftypedeftypedef的简单应用的简单应用的简单应用的简单应用n ntypedeftypedeftypedeftypedef关键字的主要作用关键字的主要作用关键字的主要作用关键字的主要作用n n为已经存在的数据类型取一个新的名字(别名);为已经存在的数据类型取一个新的名字(别名);为已经存在的数据类型取一个新的名字(别名);为已经存在的数据类型取一个新的名字(别名);n n根据需要构造复杂的数据类型;根据需要构造复杂的数据类型;根据需要构造复杂的数据类型;根据需要构造复杂

16、的数据类型;n n使用使用使用使用typedef typedef typedef typedef 为已经存在的数据类型取别名为已经存在的数据类型取别名为已经存在的数据类型取别名为已经存在的数据类型取别名使用使用使用使用typedeftypedeftypedeftypedef可以为已经存在的数据类型取别名,定义别可以为已经存在的数据类型取别名,定义别可以为已经存在的数据类型取别名,定义别可以为已经存在的数据类型取别名,定义别名后程序中既可以使用原类型名,也可以使用其别名。定名后程序中既可以使用原类型名,也可以使用其别名。定名后程序中既可以使用原类型名,也可以使用其别名。定名后程序中既可以使用原类

17、型名,也可以使用其别名。定义别名的一般形式为:义别名的一般形式为:义别名的一般形式为:义别名的一般形式为:typedef typedef typedef typedef 数据类型名数据类型名数据类型名数据类型名 别名;别名;别名;别名;typedef int INTEGER;(为系统整型(为系统整型intint类型取别名类型取别名INTEGERINTEGER)int j,k;等价于等价于 INTEGER j,k;typedef struct studenttypedef struct student long number;long number;struct date birthday;st

18、ruct date birthday;char name20;char name20;int age;int age;char sex;char sex;char address80;char address80;long tel;long tel;STU;STU;struct student struct student 等价于等价于 STUSTUstruct studentstruct student long number;long number;struct date birthday;struct date birthday;char name20;char name20;int a

19、ge;int age;char sex;char sex;char address80;char address80;long tel;long tel;;typedef struct student STU;typedef struct student STU;struct student struct student 等价于等价于 STUSTU结构体数据类型的基本概念结构体数据类型的基本概念 n n关键字关键字关键字关键字typedeftypedeftypedeftypedef的简单应用的简单应用的简单应用的简单应用n n使用使用使用使用typedeftypedeftypedeftyped

20、ef构造复杂数据类型构造复杂数据类型构造复杂数据类型构造复杂数据类型在不同的应用环境中对复杂结构数据的要求是不同的,所在不同的应用环境中对复杂结构数据的要求是不同的,所在不同的应用环境中对复杂结构数据的要求是不同的,所在不同的应用环境中对复杂结构数据的要求是不同的,所以使用以使用以使用以使用typedeftypedeftypedeftypedef关键字构造复杂结构数据没有统一的形式,关键字构造复杂结构数据没有统一的形式,关键字构造复杂结构数据没有统一的形式,关键字构造复杂结构数据没有统一的形式,在应用程序中应该根据需要构造合适形式的数据类型。在应用程序中应该根据需要构造合适形式的数据类型。在应

21、用程序中应该根据需要构造合适形式的数据类型。在应用程序中应该根据需要构造合适形式的数据类型。n n构造指定长度的字符串数据类型构造指定长度的字符串数据类型构造指定长度的字符串数据类型构造指定长度的字符串数据类型 typedef char String100;typedef char String100;typedef char String100;typedef char String100;StringStringStringString是字符串数据类型的类型名,其每个变量都可是字符串数据类型的类型名,其每个变量都可是字符串数据类型的类型名,其每个变量都可是字符串数据类型的类型名,其每个变量

22、都可以容纳最多以容纳最多以容纳最多以容纳最多99999999个有效字符。个有效字符。个有效字符。个有效字符。String s1;String s1;String s1;String s1;等价于等价于等价于等价于 char s1100;char s1100;char s1100;char s1100;例例例例8-1 8-1 8-1 8-1 用用用用typedeftypedeftypedeftypedef构造指定长度的字符串数据类型。构造指定长度的字符串数据类型。构造指定长度的字符串数据类型。构造指定长度的字符串数据类型。结构体数据类型的基本概念结构体数据类型的基本概念 n n关键字关键字关键字

23、关键字typedeftypedeftypedeftypedef的简单应用的简单应用的简单应用的简单应用n n使用使用使用使用typedeftypedeftypedeftypedef构造复杂数据类型构造复杂数据类型构造复杂数据类型构造复杂数据类型n n构造指定行列的二维数组类型构造指定行列的二维数组类型构造指定行列的二维数组类型构造指定行列的二维数组类型#define N 5#define N 5#define N 5#define N 5#define M 10#define M 10#define M 10#define M 10typedef int arrN;typedef int ar

24、rN;typedef int arrN;typedef int arrN;typedef arr ArrayM;typedef arr ArrayM;typedef arr ArrayM;typedef arr ArrayM;ArrayArrayArrayArray是是是是M M M M行行行行N N N N列整型二维数组类型的类型名,其每个变列整型二维数组类型的类型名,其每个变列整型二维数组类型的类型名,其每个变列整型二维数组类型的类型名,其每个变量都是一个量都是一个量都是一个量都是一个M M M M行行行行N N N N列的整型二维数组。列的整型二维数组。列的整型二维数组。列的整型二维数组

25、。Array a1;Array a1;Array a1;Array a1;等价于等价于等价于等价于 int a1MNint a1MNint a1MNint a1MN;例例例例8-2 8-2 8-2 8-2 用用用用typedeftypedeftypedeftypedef构造指定行数和列数的二维数组类型构造指定行数和列数的二维数组类型构造指定行数和列数的二维数组类型构造指定行数和列数的二维数组类型 。结构体数据类型的基本概念结构体数据类型的基本概念 n n关键字关键字关键字关键字typedeftypedeftypedeftypedef的简单应用的简单应用的简单应用的简单应用n n使用使用使用使用

26、typedeftypedeftypedeftypedef构造复杂数据类型构造复杂数据类型构造复杂数据类型构造复杂数据类型n n构造指针数据类型构造指针数据类型构造指针数据类型构造指针数据类型typedef int*IP;typedef int*IP;typedef int*IP;typedef int*IP;IPIPIPIP是整型指针类型的类型名,其每个变量都是指向整是整型指针类型的类型名,其每个变量都是指向整是整型指针类型的类型名,其每个变量都是指向整是整型指针类型的类型名,其每个变量都是指向整型数据的指针变量。型数据的指针变量。型数据的指针变量。型数据的指针变量。IP ptr;IP ptr

27、;IP ptr;IP ptr;等价于等价于等价于等价于 int*ptr;int*ptr;int*ptr;int*ptr;例例例例8-3 8-3 8-3 8-3 用用用用typedeftypedeftypedeftypedef构造指针数据类型。构造指针数据类型。构造指针数据类型。构造指针数据类型。结构体数据类型的基本概念结构体数据类型的基本概念 n n关键字关键字关键字关键字typedeftypedeftypedeftypedef的简单应用的简单应用的简单应用的简单应用n n使用使用使用使用typedeftypedeftypedeftypedef构造复杂数据类型构造复杂数据类型构造复杂数据类型构

28、造复杂数据类型n n构造指向函数的指针数据类型构造指向函数的指针数据类型构造指向函数的指针数据类型构造指向函数的指针数据类型typedef double(*FP)(double);typedef double(*FP)(double);typedef double(*FP)(double);typedef double(*FP)(double);F F F FP P P P是指向函数指针类型的类型名,其每个变量都是一是指向函数指针类型的类型名,其每个变量都是一是指向函数指针类型的类型名,其每个变量都是一是指向函数指针类型的类型名,其每个变量都是一个指向拥有一个个指向拥有一个个指向拥有一个个指向

29、拥有一个doubledoubledoubledouble类型形参、返回值类型为类型形参、返回值类型为类型形参、返回值类型为类型形参、返回值类型为doubledoubledoubledouble的函数的指针变量。的函数的指针变量。的函数的指针变量。的函数的指针变量。FP ptr;FP ptr;FP ptr;FP ptr;等价于等价于等价于等价于 double(*ptr)(double x);double(*ptr)(double x);double(*ptr)(double x);double(*ptr)(double x);例例例例8-4 8-4 8-4 8-4 用用用用typedeftype

30、deftypedeftypedef构造指向函数的指针数据类型。构造指向函数的指针数据类型。构造指向函数的指针数据类型。构造指向函数的指针数据类型。结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体变量的引用和输入输出结构体变量的引用和输入输出结构体变量的引用和输入输出结构体变量的引用和输入输出n n结构体变量的初始化结构体变量的初始化结构体变量的初始化结构体变量的初始化 结构体变量初始化的形式类似于一维数组,其不同之处在结构体变量初始化的形式类似于一维数组,其不同之处在结构体变量初始化的形式类似于一维数组,其不同之处在结构体变量初始化的形式类似于一维数组,其不同之处在于结构体变量的

31、成员值根据其所属类型可以是不同类型的于结构体变量的成员值根据其所属类型可以是不同类型的于结构体变量的成员值根据其所属类型可以是不同类型的于结构体变量的成员值根据其所属类型可以是不同类型的数据。初始化的一般形式为:数据。初始化的一般形式为:数据。初始化的一般形式为:数据。初始化的一般形式为:struct struct struct struct 标识符标识符标识符标识符 变量名变量名变量名变量名=结构体变量成员值列表结构体变量成员值列表结构体变量成员值列表结构体变量成员值列表 ;例:例:例:例:struct student stu1=5001,struct student stu1=5001,s

32、truct student stu1=5001,struct student stu1=5001,”LiweiLiweiLiweiLiwei”,1988,12,30,19,1988,12,30,19,1988,12,30,19,1988,12,30,19,”12 songlin12 songlin12 songlin12 songlin”,65102621;,65102621;,65102621;,65102621;结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体类型的定义和结构体变量的使用方法结构体类型的定义和结构体变量的使用方法结构体类型的定义和结构体变量的使用方法结构体类型

33、的定义和结构体变量的使用方法n n结构体类型变量的引用结构体类型变量的引用结构体类型变量的引用结构体类型变量的引用结构体变量一般也不能进行整体操作。只能通过对其中的结构体变量一般也不能进行整体操作。只能通过对其中的结构体变量一般也不能进行整体操作。只能通过对其中的结构体变量一般也不能进行整体操作。只能通过对其中的每一个数据项的操作达到操作结构体变量的目的。对于结每一个数据项的操作达到操作结构体变量的目的。对于结每一个数据项的操作达到操作结构体变量的目的。对于结每一个数据项的操作达到操作结构体变量的目的。对于结构体变量中每一个数据项(成员分量)的引用要使用点运构体变量中每一个数据项(成员分量)的

34、引用要使用点运构体变量中每一个数据项(成员分量)的引用要使用点运构体变量中每一个数据项(成员分量)的引用要使用点运算符以组合成结构体成员分量,其一般形式为:算符以组合成结构体成员分量,其一般形式为:算符以组合成结构体成员分量,其一般形式为:算符以组合成结构体成员分量,其一般形式为:结构体变量名结构体变量名结构体变量名结构体变量名.成员分量名成员分量名成员分量名成员分量名 n n嵌套结构体类型变量的引用嵌套结构体类型变量的引用嵌套结构体类型变量的引用嵌套结构体类型变量的引用对于嵌套的结构体类型的变量,访问其成员时应采用逐级对于嵌套的结构体类型的变量,访问其成员时应采用逐级对于嵌套的结构体类型的变

35、量,访问其成员时应采用逐级对于嵌套的结构体类型的变量,访问其成员时应采用逐级访问的方法,直到得到所需访问的成员为止。其形式为:访问的方法,直到得到所需访问的成员为止。其形式为:访问的方法,直到得到所需访问的成员为止。其形式为:访问的方法,直到得到所需访问的成员为止。其形式为:结构体变量名结构体变量名结构体变量名结构体变量名.一级成员分量名一级成员分量名一级成员分量名一级成员分量名.二级成员分量名二级成员分量名二级成员分量名二级成员分量名 特别提示:特别提示:结构体成员分量的数据类型与在其连接组合过结构体成员分量的数据类型与在其连接组合过程最后一个成员分量的数据类型一致。程最后一个成员分量的数据

36、类型一致。例:设有结构体类型及变量定义例:设有结构体类型及变量定义 struct A int x;float y;struct B struct A a;char c;struct B b;struct B b;则有:则有:b.a.xb.a.x 整型变量整型变量 b.a.yb.a.y 实型变量实型变量b.cb.c 字符型变量字符型变量结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体类型的定义和结构体变量的使用方法结构体类型的定义和结构体变量的使用方法结构体类型的定义和结构体变量的使用方法结构体类型的定义和结构体变量的使用方法n n结构体类型变量的输入输出结构体类型变量的输入输出结

37、构体类型变量的输入输出结构体类型变量的输入输出不允许把结构体变量作为整体进行输入或输出的操作,只不允许把结构体变量作为整体进行输入或输出的操作,只不允许把结构体变量作为整体进行输入或输出的操作,只不允许把结构体变量作为整体进行输入或输出的操作,只能将结构体变量的成员作为输入输出的对象。能将结构体变量的成员作为输入输出的对象。能将结构体变量的成员作为输入输出的对象。能将结构体变量的成员作为输入输出的对象。n n同类型结构体变量的赋值同类型结构体变量的赋值同类型结构体变量的赋值同类型结构体变量的赋值当有两个同类型的结构体变量时,可以将一个结构体变量当有两个同类型的结构体变量时,可以将一个结构体变量

38、当有两个同类型的结构体变量时,可以将一个结构体变量当有两个同类型的结构体变量时,可以将一个结构体变量作为一个整体赋值给另外一个结构体变量。作为一个整体赋值给另外一个结构体变量。作为一个整体赋值给另外一个结构体变量。作为一个整体赋值给另外一个结构体变量。例:例:例:例:struct student stu1=10001,struct student stu1=10001,struct student stu1=10001,struct student stu1=10001,”LiweiLiweiLiweiLiwei”,1980,1980,1980,1980,12,30,19,12,30,19,1

39、2,30,19,12,30,19,”12 songlin12 songlin12 songlin12 songlin”,65102621;,65102621;,65102621;,65102621;struct student stu2=stu1;struct student stu2=stu1;struct student stu2=stu1;struct student stu2=stu1;例例8-5 8-5 结构体变量引用和输入输出示例。结构体变量引用和输入输出示例。结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体变量作为函数参数结构体变量作为函数参数结构体变量作为函数参数

40、结构体变量作为函数参数n n结构体类型变量可以作为函数的结构体类型变量可以作为函数的结构体类型变量可以作为函数的结构体类型变量可以作为函数的参数在函数之间进行传递。使用参数在函数之间进行传递。使用参数在函数之间进行传递。使用参数在函数之间进行传递。使用结构体类型变量作为函数参数时,结构体类型变量作为函数参数时,结构体类型变量作为函数参数时,结构体类型变量作为函数参数时,数据的传递仍然是数据的传递仍然是数据的传递仍然是数据的传递仍然是“值传递方式值传递方式值传递方式值传递方式”;n n实现方式:函数调用时系统为形实现方式:函数调用时系统为形实现方式:函数调用时系统为形实现方式:函数调用时系统为形

41、参变量开辟一段内存单元(按照参变量开辟一段内存单元(按照参变量开辟一段内存单元(按照参变量开辟一段内存单元(按照结构体变量所需要的存储单元数)结构体变量所需要的存储单元数)结构体变量所需要的存储单元数)结构体变量所需要的存储单元数)以存放从实参传递过去的各结构以存放从实参传递过去的各结构以存放从实参传递过去的各结构以存放从实参传递过去的各结构体变量成员分量的值。体变量成员分量的值。体变量成员分量的值。体变量成员分量的值。例例例例8-6 8-6 8-6 8-6 结构体变量作为函数参数使用示例。结构体变量作为函数参数使用示例。结构体变量作为函数参数使用示例。结构体变量作为函数参数使用示例。stru

42、ct TEST int x;char ch;实参实参 struct TEST a;struct TEST a;aa.xa.chbb.xb.ch形参形参 struct TEST b;struct TEST b;10aa10结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体作函数的返回值类型结构体作函数的返回值类型结构体作函数的返回值类型结构体作函数的返回值类型n n返回结构体类型函数概念返回结构体类型函数概念返回结构体类型函数概念返回结构体类型函数概念结构体类型数据对象不但能够作为函数参数在函数之间传结构体类型数据对象不但能够作为函数参数在函数之间传结构体类型数据对象不但能够作为函数

43、参数在函数之间传结构体类型数据对象不但能够作为函数参数在函数之间传递,也可以作为函数的返回值。当函数的返回值类型是一递,也可以作为函数的返回值。当函数的返回值类型是一递,也可以作为函数的返回值。当函数的返回值类型是一递,也可以作为函数的返回值。当函数的返回值类型是一个结构体类型时,该函数就称为返回结构体类型的函数。个结构体类型时,该函数就称为返回结构体类型的函数。个结构体类型时,该函数就称为返回结构体类型的函数。个结构体类型时,该函数就称为返回结构体类型的函数。n n函数定义的形式函数定义的形式函数定义的形式函数定义的形式 struct struct struct struct 标识符标识符标

44、识符标识符 函数名函数名函数名函数名(形式参数表及定义形式参数表及定义形式参数表及定义形式参数表及定义)函数的定义和声明部分;函数的定义和声明部分;函数的定义和声明部分;函数的定义和声明部分;函数的执行部分;函数的执行部分;函数的执行部分;函数的执行部分;例例8-7 8-7 返回结构体类型函数的使用示例。返回结构体类型函数的使用示例。结构体类型和联合体类型结构体类型和联合体类型 n n结构体数据类型的基本概念结构体数据类型的基本概念结构体数据类型的基本概念结构体数据类型的基本概念 n n结构体数组结构体数组结构体数组结构体数组 n n结构体数据类型与指针的关系结构体数据类型与指针的关系结构体数

45、据类型与指针的关系结构体数据类型与指针的关系n n结构体数据类型的简单应用结构体数据类型的简单应用结构体数据类型的简单应用结构体数据类型的简单应用单链表单链表单链表单链表 n n联合体数据类型的基本概念联合体数据类型的基本概念联合体数据类型的基本概念联合体数据类型的基本概念 结构体数组结构体数组 n n结构体数组的定义和数组元素的引用结构体数组的定义和数组元素的引用结构体数组的定义和数组元素的引用结构体数组的定义和数组元素的引用n n结构体数组概念结构体数组概念结构体数组概念结构体数组概念一个结构体变量可以存放一组数据以描述一个对象的相关一个结构体变量可以存放一组数据以描述一个对象的相关一个结

46、构体变量可以存放一组数据以描述一个对象的相关一个结构体变量可以存放一组数据以描述一个对象的相关信息,如果存在若干个同类型的对象则需要使用多个具有信息,如果存在若干个同类型的对象则需要使用多个具有信息,如果存在若干个同类型的对象则需要使用多个具有信息,如果存在若干个同类型的对象则需要使用多个具有相同结构的结构体变量。可以将这些相同类型的结构体变相同结构的结构体变量。可以将这些相同类型的结构体变相同结构的结构体变量。可以将这些相同类型的结构体变相同结构的结构体变量。可以将这些相同类型的结构体变量组成结构体数组。结构体数组中的每一个数组元素都是量组成结构体数组。结构体数组中的每一个数组元素都是量组成

47、结构体数组。结构体数组中的每一个数组元素都是量组成结构体数组。结构体数组中的每一个数组元素都是结构体变量,结构体数组特别适用于处理具有若干相同关结构体变量,结构体数组特别适用于处理具有若干相同关结构体变量,结构体数组特别适用于处理具有若干相同关结构体变量,结构体数组特别适用于处理具有若干相同关系的数据组成的集合体。系的数据组成的集合体。系的数据组成的集合体。系的数据组成的集合体。n n结构体数组的定义结构体数组的定义结构体数组的定义结构体数组的定义定义结构体数组的方式与定义结构体变量相同,也有定义结构体数组的方式与定义结构体变量相同,也有定义结构体数组的方式与定义结构体变量相同,也有定义结构体

48、数组的方式与定义结构体变量相同,也有3 3 3 3三三三三种方法。如果以定义好结构体类型,则结构体数组定义的种方法。如果以定义好结构体类型,则结构体数组定义的种方法。如果以定义好结构体类型,则结构体数组定义的种方法。如果以定义好结构体类型,则结构体数组定义的一般形式是:一般形式是:一般形式是:一般形式是:struct struct struct struct 标识符标识符标识符标识符 数组名数组名数组名数组名 常量表达式常量表达式常量表达式常量表达式 ;结构体数组结构体数组 n n结构体数组的定义和数组元素的引用结构体数组的定义和数组元素的引用结构体数组的定义和数组元素的引用结构体数组的定义和

49、数组元素的引用n n结构体数组的存储形式结构体数组的存储形式结构体数组的存储形式结构体数组的存储形式构体数组各元素在系统内存中连续存放,每一数组元素的构体数组各元素在系统内存中连续存放,每一数组元素的构体数组各元素在系统内存中连续存放,每一数组元素的构体数组各元素在系统内存中连续存放,每一数组元素的成员分量也按类型定义中出现的顺序依次存放。成员分量也按类型定义中出现的顺序依次存放。成员分量也按类型定义中出现的顺序依次存放。成员分量也按类型定义中出现的顺序依次存放。n n结构体数组的初始化结构体数组的初始化结构体数组的初始化结构体数组的初始化 由于结构体数组元素(结构体变量)一般总是由若干不同由

50、于结构体数组元素(结构体变量)一般总是由若干不同由于结构体数组元素(结构体变量)一般总是由若干不同由于结构体数组元素(结构体变量)一般总是由若干不同类型的数据组成的,而且结构体数组又由若干个结构体变类型的数据组成的,而且结构体数组又由若干个结构体变类型的数据组成的,而且结构体数组又由若干个结构体变类型的数据组成的,而且结构体数组又由若干个结构体变量组成,所以结构体数组的初始化形式总与较它高一维的量组成,所以结构体数组的初始化形式总与较它高一维的量组成,所以结构体数组的初始化形式总与较它高一维的量组成,所以结构体数组的初始化形式总与较它高一维的普通变量数组的初始化形式类似。初始化的一般形式是:普

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com