函数参数的传递方式.ppt

函数参数的传递方式.ppt

ID:52768584

大小:203.01 KB

页数:8页

时间:2020-04-13

函数参数的传递方式.ppt_第1页
函数参数的传递方式.ppt_第2页
函数参数的传递方式.ppt_第3页
函数参数的传递方式.ppt_第4页
函数参数的传递方式.ppt_第5页
资源描述:

《函数参数的传递方式.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、说明:实参必须有确定的值形参必须指定类型形参与实参类型一致,个数相同若形参与实参类型不一致,自动按形参类型转换———函数调用转换形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放1.形参与实参实际参数(简称实参):调用函数时函数名后面括号中的表达式形式参数(简称形参):定义函数时函数名后面括号中的变量名voidmain()/*求三个整数之和*/{intthreesum();inta,b,c,sum;scanf(“%d,%d,%d”,&a,&b,&c); sum=threesum(a,b,c);pr

2、intf(“sumis%d”,sum);}intthreesum(intx,inty,intz){intw;w=x+y+z;return(w);}函数参数及其传递方式1例、计算x3#includefloatcube(floatx){return(x*x*x);}main(){floata,product;printf("Pleaseinputvalueofa:");scanf(“%f”,&a);/*输入1.2给a*/product=cube(a);printf(”Cubeof%.4fis%.4f

3、",a,product);}xaproduct不确定值不确定值1.21.21.728形参实参返回值分配变量存储空间在不同的函数之间传递数据,可以使用的方法:参数:通过形式参数和实际参数返回值:用return语句返回计算结果全局变量:外部变量在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数cube中的形参x才被分配内存单元。在调用结束后,形参x所占的内存单元也被释放。2参数传递方式有两种值传递方式 地址传递方式(1)赋值传递方式方式:函数调用时,为形参分配单元,并将实参的值

4、复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值。特点:若实参是变量:形参与实参占用不同的内存单元,实参变量的值传递给形参变量。若实参是常量或表达式:实参的常量值或表达式值传递给形参变量。赋值传递方式是单向值传递。3711x:y:调用前:调用结束:711x:y:例、交换两个数#includevoidmain(){intx=7,y=11;printf("x=%d,ty=%d",x,y);printf("swapped:");swap(x,y);printf("x=%d,ty=%

5、d",x,y);}swap(inta,intb){inttemp;temp=a;a=b;b=temp;}调用时:711a:b:711x:y:swap:711x:y:117a:b:7temp实参是变量:形参与实参占用不同的内存单元,实参变量的值传递给形参变量实参值传递给形参4调用结束:711y:例、交换两个数#includevoidmain(){inty=10;printf("x=%d,ty=%d",x,y);printf("swapped:");swap(7,y+1);printf("x=

6、%d,ty=%d",x,y);}swap(inta,intb){inttemp;temp=a;a=b;b=temp;}调用时:711a:b:7y+1swap:711y:117a:b:7temp实参是常量或表达式:实参的常量值或表达式值传递给形参变量实参值传递给形参11y:调用前:5(2)赋地址传递方式方式:函数调用时,将数据的存储地址作为参数传递给形参特点:若实参是变量:形参与实参占用不同的内存单元,实参变量的地址值传递给形参变量。若实参是常量或表达式:实参的常量地址值或表达式的地址值传递给形参变量。形参与实参指向

7、相同的存储单元由于形参与实参指向共同的存储单元,通过形参改变其所指向的数据单元的数据,在主调函数中可以通过实参访问,从而达到数据“双向”传递的作用(参见接下来的例子)实参和形参必须是地址数据(地址变量、常量或表达式)地址值传递仍然是单向值传递形参和实参的地址值指向同一区域6#includeswap(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}voidmain(){inta,b;scanf("%d,%d",&a,&b);printf(“a=%d,b=%d”,a,b

8、);printf(“swapped:”);swap(&a,&b);printf(”a=%d,b=%d",a,b);}例、交换两个数a59b调用前:&a&b调用swap:形参p1形参p2a59ba95b通过形参交换:p1&a&bp2a95b返回:实参&a实参&b传递a、b的地址值若实参是常量或表达式:实参的常量

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。