c语言结构体与共同体.ppt

上传人:工**** 文档编号:571837354 上传时间:2024-08-12 格式:PPT 页数:39 大小:375.87KB
返回 下载 相关 举报
c语言结构体与共同体.ppt_第1页
第1页 / 共39页
c语言结构体与共同体.ppt_第2页
第2页 / 共39页
c语言结构体与共同体.ppt_第3页
第3页 / 共39页
c语言结构体与共同体.ppt_第4页
第4页 / 共39页
c语言结构体与共同体.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《c语言结构体与共同体.ppt》由会员分享,可在线阅读,更多相关《c语言结构体与共同体.ppt(39页珍藏版)》请在金锄头文库上搜索。

1、第八章第八章 结构体与共用体结构体与共用体【教学要求教学要求】 1 1理解结构体的含义。理解结构体的含义。 2 2掌握结构体类型变量的定义方法。掌握结构体类型变量的定义方法。 3 3掌握结构体类型变量的引用方法。掌握结构体类型变量的引用方法。 4 4掌握结构体类型变量如何在定义的同时初始化。掌握结构体类型变量如何在定义的同时初始化。 5 5理解共同体的含义,掌握共同体类型变量的定义方法。理解共同体的含义,掌握共同体类型变量的定义方法。 6. 6. 了解结构体数组的定义和数组元素的引用。了解结构体数组的定义和数组元素的引用。 7 7了解指向结构体类型数据的指针的概念及使用。了解指向结构体类型数据

2、的指针的概念及使用。 8 8了解链表结点的结构形式,链表的基本操作。了解链表结点的结构形式,链表的基本操作。 9 9了解枚举类型的定义,及枚举类型的输入输出。了解枚举类型的定义,及枚举类型的输入输出。 1010了解了解TYPEDEFTYPEDEF的作用。的作用。第八章第八章 结构体与共用体结构体与共用体1.1.结构体结构体(structstruct)2.2.共同体共同体(unionunion)3.3.结构体与共用体小结结构体与共用体小结4.4.枚举类型枚举类型( (enumenum) )5.5.typedeftypedef定义类型定义类型结构体(结构体(structstruct)1.1.结构体

3、的概念结构体的概念2.2.结构体数组结构体数组3.3.结构体指针结构体指针结构体的概念结构体的概念1.1.结构体的定义结构体的定义2.2.结构体变量的存储特点结构体变量的存储特点3.3.结构体变量的引用结构体变量的引用4.4.结构体的初始化结构体的初始化结构体的定义结构体的定义1 1、含义:不同类型数据的集合。、含义:不同类型数据的集合。2 2、功能:用于描述一个、功能:用于描述一个“概念概念”。(或记录)。(或记录)如:如:num name sex age score num name sex age score addraddr 10010 10010 LiFun LiFun M 18 8

4、7.5 M 18 87.5 BeiJingBeiJing3 3、定义方法:定义方法:方法一:在定义结构体类型的同时,直接给出结构体变量。方法一:在定义结构体类型的同时,直接给出结构体变量。如:如: struct struct 结构体名结构体名 结构体成员变量的定义;结构体成员变量的定义; 变量名变量名1 1,变量名,变量名2 2,.,变量名,变量名n n;方法二:先给出结构体类型的定义,再定义结构体变量。方法二:先给出结构体类型的定义,再定义结构体变量。如:如: struct struct 结构体名结构体名 结构体成员变量的定义;结构体成员变量的定义; 例:例: ; structstruct

5、结构体名结构体名 变量名变量名1 1,变量名,变量名2 2,.,变量名,变量名n n;4 4、要点:要点:方法二:方法二:struct struct student student intint number; number; char name20; char name20; char sex; char sex; intint age; age; float score; float score; char addr30; char addr30; ; ;struct struct student student1,student2;student student1,student2;方法

6、一:方法一:struct struct student student intint number; number; char name20; char name20; char sex; char sex; intint age; age; float score; float score; char addr30; char addr30; student1,student2;student1,student2;请注意两种方法的不同特点:请注意两种方法的不同特点:1 1、“;”的用法;的用法;2 2、方法二可以用一个、方法二可以用一个* *. .h h文件来存储结构体的定义。文件来存储结构

7、体的定义。4 4、要点:、要点:结构体名(结构体名(structstruct) ): 用于标识一种新的数据类型,用于标识一种新的数据类型, 即结构体类型,可以省略。即结构体类型,可以省略。注意区分结构体类型与基本数注意区分结构体类型与基本数 据类型的不同,它是据类型的不同,它是复合数据复合数据 类型。类型。结构体成员变量与普通变量的结构体成员变量与普通变量的 定义一样,它还可以是结构体定义一样,它还可以是结构体 变量。变量。structstruct date date intint month,day,year; month,day,year;structstruct student stud

8、ent intint num; num; char name20; char name20; char sex; char sex; intint age; age; structstruct date birthday; date birthday; char addr30; char addr30; student1,student2;student1,student2;结构体变量的存储特点结构体变量的存储特点如:如:struct struct student student intint number; number; char name5; char name5; char sex;

9、char sex; intint age; age; float score; float score; char addr10; char addr10; student1,student2; student1,student2;structstruct student student所占存储空间的所占存储空间的大小为:大小为:各成员变量所占存储单元字节数各成员变量所占存储单元字节数之和。之和。s sizeofizeof(student)(student)student1.numberstudent1.numberstudent1.name0student1.name0.student1.n

10、ame4student1.name4student1.sexstudent1.sexstudent1.agestudent1.agestudent1.scorestudent1.scorestudent1.addr0student1.addr0.student1.addr9student1.addr9student2.numberstudent2.numberstudent2.name0student2.name0.student2.name4student2.name4student2.sexstudent2.sex.student1student1student2student2结构体类型

11、变量的引用结构体类型变量的引用一、原则:通过结构体的成员来引用结构体变量。一、原则:通过结构体的成员来引用结构体变量。二、成员的引用方法为二、成员的引用方法为: :结构体变量名结构体变量名. .成员名成员名三、要点:三、要点:1.1.结构体变量不能整体输入输出结构体变量不能整体输入输出, ,只能对它的成员进行操作。只能对它的成员进行操作。如如: :student1.num;student1.num;2.2.如果成员本身又是一个结构体类型如果成员本身又是一个结构体类型, ,则要使用若干个成员运算符则要使用若干个成员运算符, ,逐级找到最底层的成员。逐级找到最底层的成员。如如: :student1

12、.birthday.daystudent1.birthday.day3.3.成员变量可以象一般的变量一样进行各种运算成员变量可以象一般的变量一样进行各种运算, ,只是在运算时要只是在运算时要加上加上“.”.”运算符。运算符。4.4.可以引用成员的地址。可以引用成员的地址。结构体变量的初始化结构体变量的初始化一、只可以给主函数中或外部存储类别和静态存一、只可以给主函数中或外部存储类别和静态存储类别的结构体变量、数组赋初值。储类别的结构体变量、数组赋初值。1 1、对外部存储类型的初始化对外部存储类型的初始化. .2 2、对静态存储类型的结构体变量进行初始化对静态存储类型的结构体变量进行初始化二、给

13、结构体变量赋初值不能跨越前面的成员而二、给结构体变量赋初值不能跨越前面的成员而只给后面的成员变量赋值。只给后面的成员变量赋值。例例exp8_1:exp8_1:对外部存储类型的初始化对外部存储类型的初始化. .#include #include .hstruct struct studentstudent long number; long number; char name20; char name20; char sex; char sex; intint age; age; float score; float score; char addr30; char addr30; a a=99

14、641,”Li Ping”,M,56,”Tianjin Street”;=99641,”Li Ping”,M,56,”Tianjin Street”;main()main() printfprintf(“No.:%ld(“No.:%ldnnamenname:%s:%snsexnsex:%c:%cnaddressnaddress:%sn”,:%sn”, a.num,a.name,a.sex,a. a.num,a.name,a.sex,a.addraddr);); 例例exp8_2:exp8_2:对静态存储类型的结构体变量进行初始化对静态存储类型的结构体变量进行初始化. .#include #in

15、clude .hmain()main() static static struct struct studentstudent long number; long number; char name20; char name20; char sex; char sex; intint age; age; float score; float score; char addr30; char addr30; a a=99641,”Li Ping”,M,56,”Tianjin Street”;=99641,”Li Ping”,M,56,”Tianjin Street”; printfprintf(

16、“No.:%ld(“No.:%ldnnamenname:%s:%snsexnsex:%c:%cnaddressnaddress:%sn”,:%sn”, a.num,a.name,a.sex,a. a.num,a.name,a.sex,a.addraddr);); 结构体数组结构体数组1.1.结构体数组的含义:结构体数组的含义:数组元素是结构体类型数据的数组称为结构体数组。数组元素是结构体类型数据的数组称为结构体数组。2.2.结构体数组的定义结构体数组的定义3.3.结构体数组的初始化结构体数组的初始化4.4.结构体数组的应用举例结构体数组的应用举例结构体数组的定义结构体数组的定义一、含义:若干个

17、相同的结构体类型变量组成的数据集合。一、含义:若干个相同的结构体类型变量组成的数据集合。二、定义方法:二、定义方法:structstruct 结构体名结构体名 例如:例如: 结构体成员定义;结构体成员定义; 数组名数组名 元素个数元素个数 ;三、结构体数组的使用方法三、结构体数组的使用方法1 1、通过数组的下标(或指向数组的指针)来访问结构体变量。、通过数组的下标(或指向数组的指针)来访问结构体变量。2 2、再通过结构体变量的成员实现结构体数据的访问。、再通过结构体变量的成员实现结构体数据的访问。形式为:形式为:数组名数组名 下标下标.成员名成员名如:如:stu2.namestu2.name=

18、“Wang Ying”;=“Wang Ying”;struct struct studentstudent long number; long number; char name20; char name20; char sex; char sex; intint age; age; float score; float score; char addr30; char addr30;structstruct student student stu3;stu3;struct struct studentstudent long number; long number; char name20;

19、 char name20; char sex; char sex; intint age; age; float score; float score; char addr30; char addr30; stu3;stu3;结构体数组的物理含义:结构体数组的物理含义:表示实体(或记录)的个数。表示实体(或记录)的个数。1 1、含义:在定义结构体数组时完成数组元素的赋值、含义:在定义结构体数组时完成数组元素的赋值2 2、方法:与一般数组元素赋初值的方法相同。、方法:与一般数组元素赋初值的方法相同。struct struct studentstudent long number; long nu

20、mber; char name20; char name20; char sex; char sex; intint age; age; float score; float score; char addr30; char addr30; a3 a3=99641,”Li Ping”,M,56,”Tianjin Street”,=99641,”Li Ping”,M,56,”Tianjin Street”, 99341,”Zhang Fan”,F,78,”Beijing Road”, 99341,”Zhang Fan”,F,78,”Beijing Road”, 99441,”Ren Zhong”

21、,M,34,”Shenyang Road”; 99441,”Ren Zhong”,M,34,”Shenyang Road”;结构体数组的初始化结构体数组的初始化例例exp8_3: exp8_3: 对候选人得票的统计程序对候选人得票的统计程序, ,设有三个候选人设有三个候选人, ,每次输入一个每次输入一个候选人的名字候选人的名字, ,最后统计出每个候选人的得票的结果最后统计出每个候选人的得票的结果. .#include #include .hstructstruct person person char name20;int count; char name20;int count; leade

22、r3 leader3=“Li”,0,”Zhang”,0,”Fun”,0;=“Li”,0,”Zhang”,0,”Fun”,0;main()main() intint i,j; char leader_name20; i,j; char leader_name20; for(i=1;i=10;i+) for(i=1;i=10;i+) scanfscanf(“%s”,leader_name);(“%s”,leader_name); for(j=0;j3;j+) for(j=0;j3;j+) if( if(strcmpstrcmp(leader_name,leaderj.name)(leader_na

23、me,leaderj.name)=0)=0) leaderj.count+;leaderj.count+; printfprintf(“n”);(“n”); for(i=0;i3;i+) for(i=0;inump-num。3 3、区分下面的两种用法:区分下面的两种用法: p-n+ p-n+ 和和 + +p-np-n1 1、结构体指针的定义:、结构体指针的定义:main()main() struct struct studentstudent long number; long number; char name20; char name20; char sex; char sex; inti

24、nt age; age; float score; float score; char addr30; char addr30; a=070441,”Li Ping”,M,56,”Tianjin a=070441,”Li Ping”,M,56,”Tianjin Street”,*p=&a;Street”,*p=&a;2 2、结构体指针的使用:结构体指针的使用:a.num,a.name,a.sex,a.a.num,a.name,a.sex,a.addraddr(*p).num,(*p).name,(*p).sex,(*p).(*p).num,(*p).name,(*p).sex,(*p).add

25、raddr; ;p-num,p-name,p-sex,p-p-num,p-name,p-sex,p-addraddr; ;指向结构体数组的指针指向结构体数组的指针1 1、定义方法举例:定义方法举例:2 2、使用要点:、使用要点:p+:p+:是指针是指针p p指向数组的下个元素指向数组的下个元素, ,而这个元素是而这个元素是由结构体类型数据组成的由结构体类型数据组成的, ,它不是一个简单的变量它不是一个简单的变量. .(+(+p)-nump)-num: :先使指针先使指针p p指向结构体数组当前位置指向结构体数组当前位置的下一个元素的下一个元素, ,再访问其元素成员再访问其元素成员num;num

26、;请区别与请区别与( (p+)-nump+)-num的不同。的不同。例例exp8_4exp8_4:指向结构体数组的指针指向结构体数组的指针#include #include .hstruct struct studentstudent long number;char name20; long number;char name20; char sex; char sex;intint age; age; float score; char addr30; float score; char addr30; a3=070441,”Li Ping”,M,56,”Tianjin Street”, a

27、3=070441,”Li Ping”,M,56,”Tianjin Street”, 070442,”Zhang Fan”,F,78,”Beijing Road”, 070442,”Zhang Fan”,F,78,”Beijing Road”, 070443,”Ren Zhong”,M,34,”Shenyang 070443,”Ren Zhong”,M,34,”Shenyang Road”;Road”;main()main() structstruct student *p; student *p; for(p=a;pa+3;p+) for(p=a;pnum,p-name,p-sex,p-age

28、,p-score,p- p-num,p-name,p-sex,p-age,p-score,p-addraddr);); 指向结构体的指针作函数的参数指向结构体的指针作函数的参数1 1、用结构体变量的成员作函数的参数与一般变量、用结构体变量的成员作函数的参数与一般变量作函数的参数一致作函数的参数一致; ;2 2、用指向结构体变量的指针作函数的参数、用指向结构体变量的指针作函数的参数, ,实参将实参将地址传递给形参地址传递给形参, ,与前面指针作函数参数一致与前面指针作函数参数一致; ;3 3、新版本的、新版本的c c语言允许将整个结构体变量作为函数语言允许将整个结构体变量作为函数的参数进行传递的

29、参数进行传递, ,要求形参与实参的类型必须一要求形参与实参的类型必须一致致, ,而且程序占用内存大而且程序占用内存大, ,运行速度慢运行速度慢. .4 4、举例(参见课本、举例(参见课本p227p227)单链表单链表一、链表的含义:一、链表的含义: 当一个结构体中有一个成员是指向本结构体的指针时,当一个结构体中有一个成员是指向本结构体的指针时,通过这样的指针可以将若干个相同的结构体存储单元连通过这样的指针可以将若干个相同的结构体存储单元连接成一个新的数据结构。接成一个新的数据结构。举例:举例:二、功能:二、功能:可以根据需要动态的开辟存储空间。可以根据需要动态的开辟存储空间。1.1.mallo

30、c(size):malloc(size):在内存中动态的分配一个长度为在内存中动态的分配一个长度为sizesize的连的连续空间续空间; ;2.2.calloc(n,size):calloc(n,size):在内存中分配在内存中分配n n个长度为个长度为sizesize的连续空的连续空间间; ;3.3.free(ptr):free(ptr):释放由释放由ptrptr指针指向的内存区域指针指向的内存区域. .二、链表操作链表操作建立链表建立链表、在链表、在链表插入结点插入结点、删除链表结点删除链表结点单链表的结构:单链表的结构:structstruct student student intin

31、t num; num; float score; float score; structstruct student *next; student *next;要点:要点:1 1、链表中的元素在内存中存放顺序是不连续的。、链表中的元素在内存中存放顺序是不连续的。 由由nextnext指针指针来连接各节点。来连接各节点。2 2、链表数据结构的实现、链表数据结构的实现, ,必须利用指针变量必须利用指针变量. .headheadnumnumscorescorenextnext numnumscorescorenextnext numnumscorescoreNULLNULL .节点节点建立含建立含n

32、 n个节点的个节点的链表过程链表过程: :mallocmalloc()()mallocmalloc()()headheadnumnumscorescorenextnext numnumscorescorenextnext numnumscorescoreNULLNULL .structstruct student * student *creatcreat( )( ) structstruct student *head,*p1,*p2; student *head,*p1,*p2; n=0;head=NULL; n=0;head=NULL; p1=p2=(p1=p2=(structstruc

33、t student *)( student *)(mallocmalloc( (sizeofsizeof( (structstruct student); student); scanf(“%ld,%f”,&p1-num,&p1-score); scanf(“%ld,%f”,&p1-num,&p1-score); while(p1-num!=0) while(p1-num!=0) n=n+1;if(n=1) head=p1; n=n+1;if(n=1) head=p1; else else p2-next=p1;p2-next=p1; p2=p1;p1=( p2=p1;p1=(structst

34、ruct student *)( student *)(mallocmalloc( (sizeofsizeof( (structstruct student); student); scanf(“%ld,%f”,&p1-num,&p1-score); scanf(“%ld,%f”,&p1-num,&p1-score); p2-next=NULL;return(head); p2-next=NULL;return(head); 在链表中插入结点的过程在链表中插入结点的过程.mallocmalloc()()mallocmalloc()()headheadnumnumscorescorenextne

35、xt numnumscorescorenextnext numnumscorescoreNULLNULL numnumscorescorenextnext mallocmalloc()()删除链表结点的过程删除链表结点的过程: :mallocmalloc()()headheadnumnumscorescorenextnext numnumscorescorenextnext numnumscorescorenextnext.共同体(共同体(unionunion)1.1.共同体的含义与定义方法共同体的含义与定义方法2.2.共同体的共同体的存储特点存储特点3.3.共同体的使用共同体的使用共同体的含

36、义与定义方法共同体的含义与定义方法一、含义:一、含义: 几个不同变量共同占用同一块内存空间几个不同变量共同占用同一块内存空间, ,只是一种覆盖技术只是一种覆盖技术, ,所谓的共同占用是指这几个变量共同拥有内存的同一个起始地址所谓的共同占用是指这几个变量共同拥有内存的同一个起始地址. .共用相同的存储单元。共用相同的存储单元。二、定义形式二、定义形式: : union union 共用体名共用体名 例如例如: : 成员表列;成员表列; union date union date 变量表列变量表列; ; intint i; i; char char chch; ; float f;a,b,c; f

37、loat f;a,b,c; 共同体的存储特点共同体的存储特点1.1.同一块内存可以存放不同类型的数同一块内存可以存放不同类型的数据据, ,但在某一时刻只能存放其中的一但在某一时刻只能存放其中的一种种; ;2.2.共用体变量中起作用的成员是最后共用体变量中起作用的成员是最后一次存放的成员一次存放的成员; ;3.3.共用体变量的地址和它的成员的地共用体变量的地址和它的成员的地址是同一个地址址是同一个地址; ;4.4.共用体变量不能整体被赋值共用体变量不能整体被赋值, ,也不也不能给共用体变量赋初值能给共用体变量赋初值; ;5.5.不能把共用体变量作为函数的参数不能把共用体变量作为函数的参数进行传递

38、进行传递, ,但可以使用指向共用体变但可以使用指向共用体变量的指针作为函数的参数量的指针作为函数的参数; ;6.6.结构体类型和共用体类型可以嵌套结构体类型和共用体类型可以嵌套使用。使用。a.i/a.a.i/a.chch/a.f/a.fb.i/b.b.i/b.chch/b.f/b.fc.i/c.c.i/c.chch/c.f/c.fa ab bc c例如例如: :union date union date intint i; i; char char chch; ; float f;a,b,c; float f;a,b,c;共同体的使用共同体的使用例例exp8_5:exp8_5:已知字符已知字符

39、“0”0”的的ASCIIASCII马为十六进制的马为十六进制的30,30,下面程序的输出下面程序的输出为为: :main()main() union union unsigned char c; unsigned char c; unsigned unsigned intint i4; z; i4; z; z.i0=0x39; z.i1=0x36z.i0=0x39; z.i1=0x36; ;printfprintf(“%cn”,(“%cn”,z.cz.c););运行结果:运行结果:9 90011011000000000i1? ?.i20011100100000000i0c的地址i0的低位地址例

40、:下列程序的运行结果是什么例:下列程序的运行结果是什么? ?# #include include .h main()main() union union zjzj intint a a; char char chch2 2; auau; au.a au.a298298; printf printf(dndndn,au.dn,au.chch0 0,au.,au.chch1 1) ); 运行结果为:运行结果为: 42,142,1结构体与共用体小结结构体与共用体小结一、共同点:一、共同点:都是不同类型数据的集合都是不同类型数据的集合二、不同点:二、不同点:1 1、结构体中各个成员均在内存中存在,、结

41、构体中各个成员均在内存中存在, 而共同体中只有一个成员存在于内存中。而共同体中只有一个成员存在于内存中。2 2、结构体占用的存储空间是所有成员所占空间的和、结构体占用的存储空间是所有成员所占空间的和; ; = =sizeofsizeof( (结构体名)结构体名) 而共用体所占内存空间的大小是所有成员中占用存而共用体所占内存空间的大小是所有成员中占用存 储空间最大储空间最大的一个成员的占用空间的值。的一个成员的占用空间的值。3 3、结构体中各个成员相互独立、互不干扰,、结构体中各个成员相互独立、互不干扰, 共同体中改变一个成员的值,会影响到其它成员的值。共同体中改变一个成员的值,会影响到其它成员

42、的值。4 4、结构体与共同体可以互为成员。、结构体与共同体可以互为成员。枚举类型枚举类型1 1、含义:、含义:“枚举类型枚举类型”是将变量的取值一一列举出来是将变量的取值一一列举出来, ,变量的取值只限在列变量的取值只限在列出来的取值范围内出来的取值范围内. .2 2、定义方法:、定义方法: enum enum weekday sun,weekday sun,monmon, ,tuetue,wed,wed,thuthu, ,frifri,sat;,sat; enumenum weekday workday; weekday workday; 枚举类型的变量枚举类型的变量 workdaywork

43、day的取值只能在的取值只能在sun-satsun-sat之间之间. .3 3、使用要点:使用要点:4 4、应用举例应用举例要点:要点:1.1.枚举元素在枚举元素在c c语言中按常量来处理语言中按常量来处理, ,不是变量不是变量, ,不能被赋值不能被赋值; ;2.2.作为常量的枚举元素作为常量的枚举元素, ,它们是有值的它们是有值的. .在编译是按它们的定义顺序取在编译是按它们的定义顺序取值为值为0,1,2,30,1,2,3 也可以在定义类型时人为定义枚举元素的值也可以在定义类型时人为定义枚举元素的值, ,如如 enumenum weekday sun=7,mon=1,tue,wed,thu,

44、fri,sat; weekday sun=7,mon=1,tue,wed,thu,fri,sat; enumenum weekday workday; weekday workday;3.3.枚举值可以用来做条件判断枚举值可以用来做条件判断, ,如如: : if (workday=if (workday=monmon) ) if (workday if (workdaytuetue) ) 4.4.一个整数不能直接赋值给一个枚举变量一个整数不能直接赋值给一个枚举变量, ,如如: : workday=2;workday=2;( ) workday=( workday=(enumenum weekd

45、ay) 2; weekday) 2; ( ) workday= workday=tuetue; ; ( )例:编写程序,功能是输入当天是星期几,就可以计算并输出例:编写程序,功能是输入当天是星期几,就可以计算并输出n n天天后是星期几。例如,今天是星期六,若求后是星期几。例如,今天是星期六,若求3 3天后是星期几,则输天后是星期几,则输入入6 6,3 3,即输出,即输出“3 3天后是星期天后是星期2”2”。# #include include .h enumenum week weeksunsun,monmon,tuetue,wedwed,thuthu,frifri,satsat; enume

46、num week week ndnd(w(w,n)n) enum enum week w week w; intint n n; return( return(enumenum week)( week)(intint)w)wn)n)7)7); main() main() enumenum week w0 week w0,wnwn; / * w0 / * w0表示当天的星期值,表示当天的星期值,wnwn表示表示n n天后的星期值天后的星期值 * * / / intint n n; scanf scanf(d d,dd,w0w0,n)n); wnwnnd(w0nd(w0,n)n); if( if(

47、wnwn0) 0) printfprintf(d d天后是星期日天后是星期日 nn,n)n); else else printfprintf(d d天后是星期天后是星期dndn,wnwn) ); typedeftypedef定义类型定义类型一、含义:一、含义:使用使用typedeftypedef可以说明一个新的类型标识符。可以说明一个新的类型标识符。二、定义方法:二、定义方法:typedeftypedef 类型类型名名 标识符标识符三、要点:三、要点:1 1、“类型名类型名”为已有定义的类型标识符;为已有定义的类型标识符; “标识符标识符”为用户定义的新标识符为用户定义的新标识符2 2、经、经

48、typedeftypedef说明后的标识符可作为原数据类型名使用说明后的标识符可作为原数据类型名使用四、四、应用:应用:typedeftypedef structstruct student student intint i; i; . . REC; REC;REC x,y,*p;REC x,y,*p;typedeftypedef structstruct intint month; month; intint day; day; intint year; year; DATE; DATE;DATE birthday,*p;DATE birthday,*p;typedeftypedef structstruct intint _ _fdfd; ; intint _cleft; _cleft; intint _mode; _mode; char *_ char *_nextcnextc; ; char *_buff; char *_buff; FILE; FILE;FILE *FILE *fpfp; ;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号