c语言,为什么这2个调用函数的题一个是无法确定,一个确有值

[复制链接]
查看11 | 回复5 | 2013-8-24 11:23:23 | 显示全部楼层 |阅读模式
#include fun(int a, int b, int c) { c =a*b; return c;} void main( ) { int z; z=fun(2,3,z); //这一个程序是这里..return c是返回c的值..fun(2,3,z); 这块东西就等于c=2*3=6..单向值的传递形参的变化是不会影响到实参的!所以c不会传递6给z.printf("%d",z);} #include int add(int a, int b) { int c=a+b; return c;} void main(){int x=2,y=3,z;z = add(x,y);
printf("%d",z)...
回复

使用道具 举报

千问 | 2013-8-24 11:23:23 | 显示全部楼层
fun(2,3,z); printf("%d",z);这两句有问题。z不会把fun中的计算结果带回来,因为函数形参接收的都是值拷贝,函数退出时全部消失,不产生永久性结果。如果把fun(2,3,z);写成z=fun(2,3,z);就可以了。...
回复

使用道具 举报

千问 | 2013-8-24 11:23:23 | 显示全部楼层
你是值传递和地址传递没看明白?上面的是值传递 只把c 的值传了进去你如果用 fun(int a, int b,int *c )就可以了
第二个你采用的返回值 函数的返回值直接赋值给z , 所以是确定的值...
回复

使用道具 举报

千问 | 2013-8-24 11:23:23 | 显示全部楼层
第一个里面和第二个里面有什么不同?仔细看一下,嘻嘻,你第二个里面return有接受者z但是你第一个里面没有复制给z啊!...
回复

使用道具 举报

千问 | 2013-8-24 11:23:23 | 显示全部楼层
返回值调用函数结果是一个值...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行