第10章-结构体与共用体_第1页
第10章-结构体与共用体_第2页
第10章-结构体与共用体_第3页
第10章-结构体与共用体_第4页
第10章-结构体与共用体_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章结构体与共用体第10章_结构体与共用体ppt课件(全)第10章结构体与共用体10.1结构体类型的定义10.2结构体类型变量10.3结构体数组10.4结构体和指针10.5结构体和函数10.6链表10.7共用体10.8枚举10.9用typedef定义类型第10章_结构体与共用体ppt课件(全)numnamesexageScoreadrr041000LiPingM1878Beijing041001LiuYiF2088Jilin041002YaoLiM1990Beijing第10章_结构体与共用体ppt课件(全)10.1结构体类型的定义一般形式:struct结构体名{结构体成员表};structstudent

{intnumber;charname[20];charsex;intage;floatscore;charaddr[30];

};注意:(1)定义了一种类型,不是变量。(2)成员可以是任意类型,(3)最后的分号“;”不能省略。(4)可以嵌套定义,如:numnamesexageScoreadrr041000LiPingM1878Beijing041001LiuYiF2088Jilin041002YaoLiM1990Beijing第10章_结构体与共用体ppt课件(全)structdate{intyear;intmonth;intday;};structstu{longintnumber;charname[20];charsex;

structdatebirthday;floatscore[3];charaddress[30];};第10章_结构体与共用体ppt课件(全)10.2结构体类型变量10.2.1结构体类型变量的定义1先定义类型,再定义变量。

struct结构体名变量名等;2.在定义结构体类型的同时定义变量

struct结构体名{成员表}变量名表列;3.直接定义结构体类型变量struct{成员表}变量名表列;score[3]numname[20]sexbirthdayaddr[30]s1地址如:structstus1,s2;例如:structst{intnum;charname[20];floatscore;}s1,s2;例如:struct{intnum;charname[20];floatscore;}s1,s2;第10章_结构体与共用体ppt课件(全)10.2.2结构体变量的引用结构体变量名.成员名例如:structdate{intyear;intmonth;intday;}structexample{intnum;charname[20];structdatebir;}s1,s2;各成员的引用形式如下:s1.num=101;s2.num=s1.num+1;strcpy(,”wang”);s1.bir.year=1985;注意:结构体变量的初始化结构体类型结构体变量名={初始值表};例如:structstudent{charname[10];floatscore[3];}stu={“wang_li”,81,77,96};第10章_结构体与共用体ppt课件(全)【例10.1】输入某学生的姓名、年龄和5门功课成绩,计算平均成绩并输出。程序运行情况:wang_li21↙8277916885↙wang_li2182.077.091.068.085.0average=80.6第10章_结构体与共用体ppt课件(全)10.3结构体数组10.3.1结构体数组的定义与初始化1.结构体数组的定义例如:structstudent{intnum;charname[20];charsex;intage;floatscore[3];};structstudent

stu[10];2.结构体数组的初始化structstudent{intnum;charname[20];charsex;intage;floatscore[3];}stu[2]={{1101,”wangli”,’M”,21,75,82,94},

{1102,”liping”,’F’,20,82,79,90}

};注意:定义数组stu时,数组长度可以不指定,如:stu[]={{......},{......}};第10章_结构体与共用体ppt课件(全)

10.3.2结构体数组的引用下面通过一个例子来说明结构体数组的引用。【例10.2】输入3个复数的实部和虚部放在一个结构体数组中,根据复数模由大到小顺序对数组进行排序并输出。(注:复数的模=sqrt(实部*实部+虚部*虚部))第10章_结构体与共用体ppt课件(全)运行结果:32↙11↙54↙5.00+4.00i3.00+2.00i1.00+1.00i第10章_结构体与共用体ppt课件(全)10.4结构体和指针1.结构体指针变量的定义例如:structstudent{intnum;charname[15];floatscore[3];}stu[10],x,*p;p=&x;

2.结构体指针变量的引用例如:引用结构体变量x的成员有以下3种方法:① x.成员名,如:x.num② (*p).成员名,如:(*p).num③ p->成员名,如:p->num第10章_结构体与共用体ppt课件(全)10.5结构体和函数10.5.1结构体作函数参数1.结构体变量作函数参数【例10.4】输入两个复数,比较这两个复数模是否相等。#include<stdio.h>#include<math.h>structcomp{floatx,y; floatm;};floatcompare(structcompa,structcompb){a.m=sqrt(a.x*a.x+a.y*a.y);b.m=sqrt(b.x*b.x+b.y*b.y);return(a.m-b.m); }voidmain(){structcompa,b;scanf("%f%f",&a.x,&a.y); scanf("%f%f",&b.x,&b.y); if(compare(a,b)==0)printf("Equal\n");elseprintf("Unequal\n");}程序运行:12↙21↙Equal第10章_结构体与共用体ppt课件(全)

2.结构体指针作函数参数【例10.5】编写按复数模从小到大排序函数。第10章_结构体与共用体ppt课件(全)10.5.2返回结构体的函数1.返回结构体数据的函数函数可以带回一个结构体类型的数据给主调函数。【例10.6】输入一批复数,查找并输出模最大的复数。编写函数完成查找功能。第10章_结构体与共用体ppt课件(全)#defineN5#include<stdio.h>#include<math.h>structcomp{floatx,y;floatm;};structcompfind(structcompp[],intn){inti,k=0;floatt=p[0].m;for(i=1;i<n;i++)if(t<p[i].m) {t=p[i].m;k=i; }returnp[k];}voidmain(){structcompa[N],max;inti;for(i=0;i<N;i++)scanf("%f%f",&a[i].x,&a[i].y);a[i].m=sqrt(a[i].x*a[i].x+a[i].y*a[i].y);}max=find(a,N);printf("max=%.1f%+.1fi\n",max.x,max.y);}程序运行:11↙13↙3-2↙5-3↙79↙max=7.0+9.0i第10章_结构体与共用体ppt课件(全)2.返回结构体指针的函数#defineN5#include<stdio.h>#include<math.h>structcomp{floatx,y;floatm;};structcomp*find(structcomp*p,intn){inti,k=0;floatt=p[0].m;for(i=1;i<n;i++)if(t<(p+i)->m) {t=(p+i)->m; k=i; }return(p+k); }voidmain(){structcompa[N],*max; inti;for(i=0;i<N;i++){scanf("%f%f",&a[i].x,&a[i].y);a[i].m=sqrt(a[i].x*a[i].x+a[i].y*a[i].y);}max=find(a,N);printf("max=%.1f%+.1fi\n",max->x,max->y);}程序运行:11↙13↙3-2↙5-3↙79↙max=7.0+9.0i第10章_结构体与共用体ppt课件(全)10.6链表(简介)10.6.1简单链表head张三李四王五孙六NULL……structstudent{charname[10];floatscore;structstudent*next;};第10章_结构体与共用体ppt课件(全)10.6.2动态链表分配库函数1.malloc函数函数原型:void

*malloc(unsignedintsize);使用方法:例如:char*x;x=(char*)malloc(10);第10章_结构体与共用体ppt课件(全)2.calloc函数函数原型:void

*calloc(unsignedintn,unsignedintsize);使用方法:例如:float*x;x=(float*)calloc(10,4);第10章_结构体与共用体ppt课件(全)3.free函数函数原型:void

free(void*p);使用方式:例如:float*x;x=(float*)calloc(10,4);……free(x);第10章_结构体与共用体ppt课件(全)9.6.3单向链表的基本操作

建立链表遍历链表将节点插入到链表删除链表第10章_结构体与共用体ppt课件(全)例:有以下结构体说明和变量定义,如图所示,structnode{intdata;structnode*next;}*p,*q,*r;指针p、q、r分别指向此链表中的三个连续结点。现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是A)p->next=q->next;B)p->next=p->next->next;C)p->next=r;D)p=q->next;第10章_结构体与共用体ppt课件(全)10.7共用体1.共用体变量的定义union共用体名{共用体成员表};(1)先定义共用体类型,再定义共用体变量例如:uniondata{inti;charch;floatf;};uniondataa,b,c;第10章_结构体与共用体ppt课件(全)(2)在定义公用体类型的同时定义变量例如:uniondata{inti;charch;floatf;}a,b,c;(3)不定义共用体类型名,直接定义变量例如:union{inti;charch;floatf;}a,b,c;第10章_结构体与共用体ppt课件(全)2.共用体变量的引用

共用体变量的引用方式与结构体变量相同,可以使用以下3种形式之一:(1)共用体变量名.成员名。(2)指针变量名->成员名。(3)(*指针变量名).成员名。例如,对于前面所定义的共用体变量a,用以下赋值语句:a.i=1;a.ch=’$’; a.f=1.5;第10章_结构体与共用体ppt课件(全)10.8枚举

如果一个变量的值只有几种可能的值,可以定义为枚举类型。所谓“枚举(enumeration)”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。

1.枚举类型的定义枚举类型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论