北京 理工大学 C语言 程序设计 第十章结构联合与枚举类型2_第1页
北京 理工大学 C语言 程序设计 第十章结构联合与枚举类型2_第2页
北京 理工大学 C语言 程序设计 第十章结构联合与枚举类型2_第3页
北京 理工大学 C语言 程序设计 第十章结构联合与枚举类型2_第4页
北京 理工大学 C语言 程序设计 第十章结构联合与枚举类型2_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

结构与函数的关系: 向结构中传递函数的成员; 在函数之间传递整个结构; 向函数传递结构的地址〔指针〕。向函数中传递结构的成员 在函数中传递结构成员的方法与传递简单变量的方法相同:在函数之间传递成员的值;在函数之间传递成员的地址。一、结构、结构指针作为函数的参数第四节在函数之间传递结构实例 printf(“%d〞,man.birthday.year);传递成员的值scanf(“%d〞,&man.birthday.year);传递成员的地址 gets();传递结构成员的地址第四节在函数之间传递结构在函数之间传递整个结构

将结构作为整体,在函数之间传递:将结构变量作为形参;函数的返回值为一个结构类型。第四节在函数之间传递结构例:利用结构变量求解两个复数之积。①、(3+4i)×(5+6i)②、(10+20i)×(30+40i)structcomplx{ intreal;/*real为复数的实部*/ intim;/*im为复数的虚部*/};structcomplx

cmult(za,zb)/*函数返回值为结构类型*/structcomplx

za,zb; /*形式参数为结构类型*/{ structcomplx

w; w.real=za.real*zb.real-za.im*zb.im; w.im=za.real*zb.im+za.im*zb.real; return(w); /*返回计算结果,返回值的类型为结构*/} 例C10_401第四节在函数之间传递结构向函数传递结构的地址

向函数中传递结构的地址要将函数的形参定义为指向结构的指针, 在调用时要用结构的地址作为实参。例:输入10本书的名称和单价,按照单价排序。 程序中使用插入排序算法。第四节在函数之间传递结构插入排序的根本思想是:在数组中,有N个已经从小到大已经排好序的元素,要参加1个新的元素时,可以从数组的第1个元素开始,依次与新元素进行比较。当数组中首次出现第i个元素的值大于新元素时,那么新元素就应当插在原来数组中的第i-1个元素与第i个元素之间。 此时可以将数组中第i个元素之后〔包括第i个元素〕的所有元素向后移动1个位置,将新元素插入,使它成为第i个元素。这样就可以得到已经排好序的N+1个元素。第四节在函数之间传递结构5552367911

555555555555222555535555555597611插入排序法例如第四节在函数之间传递结构#defineNUM10structbook /*定义结构book*/{ charname[20]; /*书名*/ floatprice; /*单价*/};main(){ structbookterm,books[NUM]; intcount; /*数组books的元素计数器*/ for(count=0;count<NUM;){printf(“EnterNameandPrice.book%d=",count+1);scanf(“%s%f〞,,&term.price);sortbook(term,books,count++);/*传递结构变量term和结构数组book数组的首地址〕*/ } printf("--------BOOKLIST---------\n"); for(count=0;count<NUM;count++) printbook(&books[count]); /*传递数组中1个元素的地址*/}第四节在函数之间传递结构sortbook(term,

pbook,count)structbook

term; /*形参:结构变量term*/structbook

*pbook;/*指向结构数组首元素的指针pbook*/intcount;

/*数组中已存入count个有序元素*/{ inti;

structbook*q,*pend

=pbook;

for(i=0;i<count;i++,pend++); for(;pbook<pend;pbook++) if(pbook->price>term.price)

break;

for(q=pend-1;q>=pbook;q--) *(q+1)=*q; *pbook=term;

/*在pbook处插入新元素term*/}第四节在函数之间传递结构printbook(pbook)structbook*pbook;{ printf("%-20s%6.2f\n",

pbook->name,pbook->price);}例C10_402第四节在函数之间传递结构定义结构变量stu:struct

student{intnum; floatscore;charsex;}stu;结构变量stu占用内存情况

numscoresex2个字节4个字节1个字节sizeof(stu)是7。第五节联合类型union定义联合变量stu:student{intnum; floatscore;charsex;}stu;联合变量stu占用内存情况

4个字节

2个字节

1个字节unionunionunion联合变量占用空间的大小等于成员分量中最长的成员占用内存的长度。4个字节第五节联合类型0x780x560x340x12union{longi;intk;charc;}mix;mix.i=0x12345678;printf(“%x\n〞,mix.i);printf(“%x\n〞,mix.k);printf(“%x\n〞,mix.c);ffe0ffe1ffe2ffe3高地址低地址1234567800010010001101000101011001111000低高ffe3ffe2

ffe1

ffe0

第五节联合类型

mix.c=‘A’;1234567800010010001101000101011001111000低高ffe3ffe2

ffe1

ffe0

123456

4

1

00010010001101000101011001000001低高ffe3ffe2

ffe1

ffe0

printf(“%ld\n〞,mix.i);printf(“%d\n〞,mix.k);printf(“%c\n〞,mix.c);30541984122081A例C10_501第五节联合类型枚举类型的特点:数据的取值是有限个数的数据类型。定义枚举类型的格式

enum

枚举类型名{可能的取值表};例如:

enumweekday{sun,mon,tue,wed,thu,fri,dat};说明枚举类型变量的格式

enum枚举类型名变量标识符;第六节枚举类型用户自定义类型 标准类型〔如int、char、float等〕:系统已经定义好的类型,用户可以直接使用,无须再进行定义。 用户自定义类型:用户根据自己的实际要求,自己定义的新的数据类型。除结构和联合等类型之外,还可以用类型说明语句typ

温馨提示

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

评论

0/150

提交评论