10.2.2 结构体与函数_第1页
10.2.2 结构体与函数_第2页
10.2.2 结构体与函数_第3页
10.2.2 结构体与函数_第4页
10.2.2 结构体与函数_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、LOGOLOGO结构体作为一种构造数据类型,也可以在函数间传递数据Teacher teaching designCONTENTS 目 录结构体与函数动态存储分配结构体与函数PART 01实参和形参都相同结构体类型的指针形式三调用函数将结构体变量整体传递给被调用函数时,采用的是“值传递”方式,此时将结构体变量所占内存单元的内容全部按顺序传递给形参(形参必须是同类型的结构体变量)注意实参和形参都是结构体变量名形式一实参是结构体变量的地址,形参是相同结构体类型的指针形式二结构体变量或结构体数组元素作为函数参数#includestruct Pset int x; int y;point;void Di

2、splay(struct Pset point) printf(x is %dn,point.x); printf(y is %dn,point.y);struct Pset SetPoint(int x,int y) point.x=x; point.y=y; return point;添加标题内容例题感知int main() point=SetPoint(2,3); Display(point); system(pause); return 0; 使用指针,即用指针变量作函数参数进行传送。这时由实参传向形参的只是地址,从而减少了时间和空间的浪费。解决方法在ANSI C标准中允许用结构变量作

3、函数参数进行整体传送。但是这种传送要将全部成员逐个传送,特别是成员为数组时将会使传送的时间和空间浪费很大,严重地降低了程序的运行效率。结构体指针变量作函数参数(地址传递)用函数处理计算题目所要求的人数统计函数编写3思考结构体所需成员定义结构体类型1主函数定义结构体变量,调用成绩处理函数编写主函数2计算一组学生的平均成绩和不及格人数。用结构指针变量作函数参数编程。struct stu int num; char *name; char sex; float score;boy5= 101,Li ping,M,45, 102,Zhang ping,M,62.5, 103,He fang,F,92.

4、5, 104,Cheng ling,F,87, 105,Wang ming,M,58, ;main() struct stu *ps; void ave(struct stu *ps); ps=boy; ave(ps);void ave(struct stu *ps) int c=0,i; float ave,s=0; for(i=0;iscore; if(ps-scorenum=102; ps-name=Zhang ping; ps-sex=M; ps-score=62.5; printf(Number=%dnName=%sn,ps-num,ps-name); printf(Sex=%cnS

5、core=%fn,ps-sex,ps-score); free(ps);本例中,定义了结构stu,定义了stu类型指针变量ps。 然后分配一块stu大内存区,并把首地址赋予ps,使ps指向该区域。 再以ps为指向结构的指针变量对各成员赋值,并用printf输出各成员值。 最后用free函数释放ps指向的内存空间。整个程序包含了申请内存空间、使用内存空间、释放内存空间三个步骤,实现存储空间的动态分配。说明分配一块区域,输入一个学生数据。点击输入简要文字内容,需概括精炼,不用多余的文字修饰,言简意赅的说明分项内容。添加标题内容点击输入简要文字内容,需概括精炼,不用多余的文字修饰,言简意赅的说明分项

6、内容。添加标题内容点击输入简要文字内容,需概括精炼,不用多余的文字修饰,言简意赅的说明分项内容。添加标题内容点击输入简要文字内容,需概括精炼,不用多余的文字修饰,言简意赅的说明分项内容。添加标题内容添加标题内容添加标题内容案例分析交流提升PART 04#include main() structint x;char *y;tab2=1,ab,2,cd, *p=tab;printf(%d,*p-y);printf(%d,*(+p)-y);源程序A) 4950 B) 9798 C) 9799 D)99100 答案本题主要考查了对结构体成员的引用形式及指针运算。题中*y是指向字符串的。题中*p首先是

7、指向数组的起始地址tab0,*(+p)表示先移动指针指向下一个元素tab1,再取对应的值。解析分析如下程序其运行结果struct Student int num; char name20; int score3; ;结构体定义int main() /*struct Student stu5=10101,Li Lin,60,70,80,10102,Zhang Fun,75,90,80,10103,Wang Min,85,75,85, 10104,Wen Wu,60,72,80,10105,Xiao Ming,95,85,80;*/_ input( stu); print( stu); system(pause);主函数1编写一个函数print,打印一个学生的成绩数组,写一个函数input,用来输入5个学生的数据的记录int print(struct Student stu) int i,j; for(i=0;i5;i+) printf(%5d%10st,stui.num,); for(j=0;j3;j+) printf(%dt,stui.scorej); printf(n); 输出函数输入函数int input(struct Student stu) int i,j; for(i=0;i5;i+) pr

温馨提示

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

评论

0/150

提交评论