版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构与函数的关系: 向结构中传递函数的成员; 在函数之间传递整个结构; 向函数传递结构的地址〔指针〕。向函数中传递结构的成员 在函数中传递结构成员的方法与传递简单变量的方法相同:在函数之间传递成员的值;在函数之间传递成员的地址。一、结构、结构指针作为函数的参数第四节在函数之间传递结构实例 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电工组织训练方法
- 胰腺癌化疗护理规范
- 护理专业就业指导与职业规划
- 核医学科甲状腺癌放射治疗护理手册
- 分包采购协调材料比选方案
- 儿童外科小儿腺样囊性纤维瘤康复护理要点
- 老年医学科老年抑郁症康复训练指南
- 核医学科放射性碘治疗指南
- 入职新员工自我介绍
- 地铁区间施工投标风险控制方案
- 小学50米跑教育
- 《计算机基础与应用(Office和WPS Office通-用)》中职全套教学课件
- 装修木工劳务分包协议书
- 小学英语单词大全打印
- 货车检车员:中国铁路兰州局集团有限公司编
- 工业区位因素与工业布局导学案 高中地理湘教版(2019)必修二+
- 电力施工道路施工方案
- 第一单元项目一探秘鸟类研究-认识数据、信息与知识课件沪科版(2019)高中信息技术必修1
- 日本跌宕50年一个制造业强国的沉浮史
- 电生磁 电磁铁的应用浙教版 八年级科学下册【思维导图+知识提要+典例提升】
- IE改善四大原则及ECRS技法课件
评论
0/150
提交评论