6.5 数组作为函数的参数(课件)-《 C语言程序设计》同步教学(电子工业出版社)

2024-08-11
| 16页
| 64人阅读
| 10人下载
普通

内容正文:

第六章 程序的模块化--函数 1 CONTENTS 目录 01 02 函数的分类 函数的认知 03 自定义函数及其应用 04 函数的调用 CONTENTS 目录 05 06 函数的递归调用 函数的嵌套调用 07 数组作为函数的参数 08 变量的作用域 C语言 知识树 My First Template 数组作为函数的参数 C语言程序设计 5 C语言 参数传递方式 1、值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值 特点:形参与实参占用不同的内存单元,单向传递。 2、址传递方式 方式:函数调用时,将数据的存储地址作为参数传递给形参 特点:形参与实参占用同样的存储单元;“双向”传递;实参和形参必须是地址常量或变量 地址:ED2F 形参 5 实参 地址:EF3D 5 地址:ED2F 形参 实参 地址:EF3D 5 EF3D 8 数组作为函数的参数 My First Template C语言 数组元素作为函数实参(值传递): 值传递过程中的实参可以是常量、变量、表达式。数组元素的作用和变量一样,凡是变量可以出现的地方,均可用数组元素代替,因此数组元素作为函数实参的用法和变量相同; 数组名作为函数实参(址传递): 把数组名作为函数的形参和实参使用,传递的是数组第一个元素的地址 数组作为函数的参数 数组作为函数的参数 My First Template C语言 数组元素作为函数实参(值) 数组作为函数的参数 数组元素就是下标变量,它与普通变量没有区别,数组元素可以作为函数的实参,不能作为形参。 因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。 实例:输出数组中所有大于0的元素。 #include <stdio.h> void panduan(int v)//封装函数,判断v对应的值是否大于0 { if(v>0) { printf("%d ",v);//如果大于0则输出 } } void main()//主函数 { int a[5],i;//定义数组及循环变化因子i printf("请输入五个数组元素以空格分隔 "); for(i=0;i<5;i++) { scanf("%d",&a[i]); panduan(a[i]);//调用函数判断 } } My First Template C语言 1、用数组名作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明。当形参和实参二者不一致时,即会发生错误。 2、在用数组名作函数参数时,不是值传送,即不是把实参数组的每一个元素的值都赋予形参数组的各个元素。因为实际上形参数组并不存在,编译系统不为形参数组分配内存。 3、数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送就是地址的传送,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就指向了实参数组所在的地址空间。 4、实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。 数组名作为函数的实参(址) 函数的调用—相关知识 My First Template C语言 数组名作为函数的实参(址) 函数的调用—相关知识 实例:通过函数实现5个学生成绩的排序。 #include <stdio.h>// 预处理 #define N 5 //定义长度5 void sort(float[]);//函数声明 void main()//主函数 { float grade[N]; int i; printf("输入 %d 个学员的成绩: ",N); for(i=0;i<N;i++) { scanf("%f",&grade[i]); } sort(grade);//调用函数排序 printf("排序后的成绩为: "); for(i=0;i<N;i++)//输出排序后的结果 { printf("%5.2f ",grade[i]); } printf(" "); } void sort(float a[N])//封装排序函数 { int i,j; float temp; for(i=0;i<N;i++) { for(j=0;j<N-i-1; j++) { if(a[j] > a[j+1]) {//如果 a[j] > a[j+1]则交换 temp = a[j+1]; a[j+1] = a[j]; a[j] = temp; } } } } My First Template 变量的作用域 C语言程序设计 11 C语言 变量的作用范围称为变量的作用域,变量定义的位置决定了其作用域。变量除了可以定义在函数内,也可以定义在函数外。C语言的变量,按着作用域可分为局部变量和全局变量 变量的作用域 变量的作用域 作用域是某些事物起作用或有效的区域。 限于陆地 限于海洋 限于空中 My First Template C语言 程序中变量也有不同的使用范围,称为变量的作用域。变量的作用域决定变量的可访问性,根据变量的作用范围不同,可以分为局部变量和全局变量。 变量的作用域 变量的作用域 void f1(int age) { float money; . . . . . . . . . } 局部变量:不能在函数外使用 float money; void main() { . . . . . . } void f1(int age) { . . . . . . } 全局变量:可以在整个程序中使用 My First Template C语言 本次任务 使用函数结合变量的作用域,计算两个数的和(输出两次) 变量的作用域 My First Template C语言 变量的作用域 任务初探 #include <stdio.h> int sum=0; void addNumbers() { int num1,num2; printf(" 请输入两个数:"); scanf("%d %d",&num1,&num2); sum=num1+num2; printf(" 子函数中 sum 的值是 %d ",sum); } void main() { addNumbers(); printf(" 主函数中 sum 的值是 %d ",sum); } 内存 sum num2 0 22 num1 请输入两个数:11 22 子函数中sum的值是33 主函数中sum的值是33 11 33 My First Template C语言 变量的作用域 任务实现 #include <stdio.h> void addNumbers() { int num1,num2,sum; printf(" 请输入两个数:"); scanf("%d %d",&num1,&num2); sum=num1+num2; printf(" 子函数中 sum 的值是 %d ",sum); } void main() { int sum=0; addNumbers(); printf(" 主函数中 sum 的值是 %d ",sum); } 内存 sum num2 0 22 num1 请输入两个数:11 22 子函数中sum的值是33 主函数中sum的值是 0 11 sum 33 My First Template $$

资源预览图

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