5.3 函数的参数传递(教案)-《C语言程序设计》同步教学(电子工业出版社)

2024-07-10
| 3页
| 91人阅读
| 63人下载
普通

内容正文:

教案用纸 第 6 周 总第 17 次 学时:2 教学班级: 课程:C语言程序设计 授课教师: 课题:5.3 函数的参数传递 教学方法:讲授、启发 教具:常规教具 教学目标:使同学们掌握函数参数传递 教学重点:函数如何进行参数传递 教学难点:函数的地址传递方式 主要教学内容: 5.3 函数的参数传递 课后回顾: 教案用纸 四个一: 提问:字符数组的定义、赋值及使用。 导入:函数调用需要向子函数传递数据,一般是通过实参将数值传递给形参。实参向形参的参数传递有两种形式:值传递和地址传递。 正文: 5.3 函数的参数传递 函数调用需要向子函数传递数据,一般是通过实参将数值传递给形参。实参向形参的参数传递有两种形式:值传递和地址传递。 (1)值传递:是指单向的数据传递(将实参的值赋给形参),传递完成后,对形参的任何操作都不会影响实参的值。 (2)地址传递:将实参的地址传递给形参,使形参指向的数据和实参指向的数据相同(相当于实参和形参在内存中共用同一个空间),因而被调函数的操作会直接影响实参指向的数据。地址传递又称为指针传递或传址,在后面的指针章节中详细介绍。 下面通过一个案例来了解值传递和地址传递的特点。 【案例5-2】编写一个子函数change,有两个整型形参,在子函数中交换这两个形参的值。编写子函数add,有一个数组作为函数形参,在该函数中将数组中每个元素的值都乘2。通过该例程了解值传递和地址传递的区别。 程序分析 因为值传递后,形参值的改变不会影响到实参,所以在change子函数中交换两个形参值后输出这两个值,在主函数再重新输出两个实参值,会发现两个实参的值并没有改变。这也证明了值传递方式是单向的数据传递。 在add函数中将数组作为函数参数,则相当于实参和形参都共用同一个数组空间,那么对形参中每个数组元素值的改变,也同样对实参数组的每个值改变。在主函数中再输出实参的数组每个元素,可以发现,数组的元素值都被乘以2了。 要注意两个子函数的形参书写格式和两个子函数的调用格式。 编写程序代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 /* 案例5-2 函数值传递和地址传递例程 */ #include "stdio.h" void change(int x,int y) /*该子函数功能是交换两个形参的值*/ { int t; printf("子函数change中两个参数交换前:x=%d,y=%d ",x,y); t=x; x=y; y=t; printf("子函数change中两个参数交换后:x=%d,y=%d ",x,y); } void add(int a[]) /*该子函数功能是批量将每个数组元素值乘2*/ { int i; for(i=0;i<10;i++) a[i]*=2; /*每个数组元素的值乘2*/ } void main() { int a,b,i; int x[10]={1,3,5,7,9,11,13,15,17,19}; printf("请输入两个整数:"); scanf("%d%d",&a,&b); change(a,b); /*子函数change调用语句*/ printf("主函数中两个实参在调用子函数change后的值为:a=%d,b=%d ",a,b); printf(" 原数组x中的10个元素值为: "); for(i=0;i<10;i++) printf("%5d",x[i]); add(x); /*子函数add调用语句*/ printf(" 调用子函数add后,数组x中的10个元素值为: "); for(i=0;i<10;i++) printf("%5d",x[i]); } 调试运行程序 程序运行后,输入两个整数4和8,运行结果如下: 小结: 通过本次课的学习,大家应该掌握函数之间的数据传递方式。 备 注 重点:通过“问年龄”的故事讲解如何进行递归调用。 学科网(北京)股份有限公司 $$

资源预览图

5.3  函数的参数传递(教案)-《C语言程序设计》同步教学(电子工业出版社)
1
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。