版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二章函数参数12目标掌握函数参数按值传递掌握函数参数按指针传递掌握函数参数为数组类型掌握全局变量和局部变量3按值传递函数参数在默认情况下的传值方式按值传递是赋值过程,当修改了形参的值,不会改变实参的值4#include"stdio.h"//声明并定义函数voidchangeParaValue(intpara1){ para1++; printf("函数内形参值为:%d\n",para1);}//主函数voidmain(){ inti; i=10; printf("调用函数前值为:%d\n",i); changeParaValue(i);//调用函数,i作为实参传入
printf("调用函数后值为:%d\n",i);}5交换值功能#include"stdio.h"voidswap(inti,intj){ inttmp; tmp=i; i=j; j=tmp;}voidmain(){ intx,y; x=1; y=4; swap(x,y);}通过函数使变量的两个值交换是否能够实现我们需要另外的值传递方式6指针作为函数参数函数的参数可以是简单数据类型,也可以是指针类型。使用指针类型做函数的参数,实际向函数传递的变量的值是一个地址。7#include"stdio.h"//定义并声明函数changeValue,该函数有一个参数,该参数的类型为指针voidchangeValue(int*p){ (*p)++;//对该指针变量所指向的值进行自增}voidmain(){ inta,*pi; a=10; pi=&a; printf("调用函数前变量值:%d\n",*pi); //调用函数,由于该函数的参数为一个指针参数,所以传一个指针变量
changeValue(p); printf("调用函数后变量值:%d\n",*pi);}8#include"stdio.h"//swap函数实现了互换两个变量的值voidswap(int*px,int*py){ inttmp; tmp=*px; *px=*py; *py=tmp;}voidmain(){ intm,n,*pm,*pn; m=3; n=12; pm=&m; pn=&n; printf("调用函数前变量m=%d,n=%d\n",m,n); swap(pm,pn); printf("调用函数后变量m=%d,n=%d\n",m,n);}&m&n312&m12&n3pmmpnnpxmpyn实参的值赋给形参9数组作为函数参数数组名包含了数组中第一个元素的地址当用数组作为参数时,传递的就是数组中第一个元素的地址我们可以给函数加一个参数,该参数就是用来传递数组长度给函数的10#include"stdio.h"intgetLargest(intarr[],intlength){ intmax,i; max=arr[0]; for(i=0;i<length;i++) { if(max<arr[i]) { max=arr[i]; } } returnmax;}voidmain(){ intinputArr[10],i,max; printf("请输入10个数字。\n"); //通过循环输入10个数字
for(i=0;i<10;i++) {scanf("%d",&inputArr[i]); } //调用getLargest函数,该函数返回一个数组中的最大值
max=getLargest(inputArr,10); //输出最大值
printf("最大值为:%d",max);}01236789inputArr数组arr11voidmain(){ intarr[10],arrLength,max; //调用输入输入函数
arrLength=inputArr(arr); //得到最大值
max=getLargest(arr,arrLength); //输出最大值
printf("最大值为:%d\n",max);}#include"stdio.h"intinputArr(intarr[]){ charin,i; intcount=0 printf("请输入数字。\n"); for(i=0;i<10;i++) { scanf("%d",&arr[i]); count++; getchar(); printf("是否继续输入?(y/n)"); scanf("%c",&in); if(in=='n'||in=='N') { break;//用户停止输入,退出循环
} } returncount;//这个count的值就是用户输入的数量}intgetLargest(intarr[],intlength){ intmax,i; max=arr[0];
for(i=0;i<length;i++) { if(max<arr[i]) {max=arr[i]; } } returnmax;}12局部变量和全局变量局部变量是在函数内部定义的变量,其作用域为它所在的函数内全局变量是函数外声明的变量。其作用域为从定义变量的位置开始到程序结束,其它任何函数都能访问。13变量的作用域限于陆地限于水中限于空中14局部变量15全局变量#include"stdio.h"intgm=1,gn=3;//声明两个全局变量gm和gn//声明并定义函数f1,该函数返回类型为int,有一个int类型参数intf1(intt){intr;r=t+gm;//使用全局变量gmreturnr;}voidmain(){intx,y;x=10;y=f1(x)+gn;//使用全局变量gn}16变量的存储类型自动的(auto)静态的(static)寄存器(register)外部的(extern)17静态的(static)#include"stdio.h"voidfunc(intcount){ staticintm=0; intn=0; m=m+1; n=n+1; printf("第%d次调用函数的时候:m=%d,n=%d\n",count,m,n);}voidmain(){ inti; for(i=0;i<10;i++) {func(i);}}18总结在默认情况下,函数是按值传递函数的参数可以是我们在前面学过的简单数据类型,也可以是指针类型。使用指针类型做函数的参数,实际向函数传递的变量的值是一个地址。函数参数是数组时,实际传递的是数组的首地址。所谓的作用域就是程序中的那些部分可以访问哪些变量,哪些变量在哪些地方不能被别人访问。局部变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44725-2024盲文出版物版式
- 挂名法人与实际控制人协议书范本版3篇
- 2024年度企业间版权转让保密协议3篇
- 2024年度租赁合同中租赁物的描述与租赁期限的具体规定3篇
- 二零二四年环保设施设计与施工合同
- 乘法课件教学课件
- 无产证房屋买卖合同书
- 2024年度设备租赁合同租赁设备及租赁期限详细规定
- 人教版九年级化学第四单元自然界的水3水的组成教学课件
- 顾问合作协议书范本
- 动物的分类全面版
- HG-T20678-2023《化工设备衬里钢壳设计标准》
- 24春国家开放大学《建筑测量》形考任务实验1-6参考答案
- 2024年社区工作者考试必背1000题题库及答案(必背)
- 工程项目部安全生产治本攻坚三年行动实施方案
- 【课件】体量与力量-雕塑的美感+课件-高中美术人美版(2019)美术鉴赏
- 生态文明通识智慧树知到期末考试答案2024年
- 创新设计产品说明书
- 2024年重症监护护理专科护士培训试题
- 火电厂检修培训课件
- 学校文印室外包服务 投标方案(技术方案)
评论
0/150
提交评论