| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4855 人关注过本帖
标题:怎么确定函数的返回值?
取消只看楼主 加入收藏
aaaasix
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-10
收藏
 问题点数:0 回复次数:1 
怎么确定函数的返回值?
就像:
void f (int x, int y)
{ int t;
if(x<y){ t=x;y=x;y=t;}
}
main()
{ int a=4,b=3,c=5;
f(a,b); f(a,c); f(b,c);
printf("%d,%d,%d\n,a,b,c);
}
他说算出来结果是:4,3,5
就是因为调用函数没起到作用!
是不是VOID定义的就没有返回值?而其它像INT,CHAR定义的就有返回值?
如果要想让这个程序有返回值!那怎样改呢?
还有啊,函数的返回值是怎么返回去的?这个问题最复杂!
望高手不吝赐教!

搜索更多相关主题的帖子: 返回值 函数 
2007-06-28 00:48
aaaasix
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-10
收藏
得分:0 
引用三楼的高手:
就是没起到作用,但是实际上你却调用了。这个问题很典型,当你引用f(a,b)的时候,a和b的值分别传个x和y。然后在f()函数里按条件交换或者不交换x和y的值.这里,有没有交换x,y的值和a,b已经没有关系了,x,y和a,b的内存单元完全没有关系.所以在main函数执行完后没有起到预期的结果.
如果在f()函数里用两个指针*x和*y做参数:
void f (int *x, int *y)
{ int t; /*如果调用的是f(a,b)的话,则*x和a是等价的,*y和b是等价的.这样才真正改变了a,b.*/
if(*x<*y){ t=*x;*y=*x;*y=t;}
}
这个程序是不需要返回值的.只是对变量之间进行值的替换,并不需要返回值.
关于函数返回值的问题建议你看看课本,课本上有很详细的说明,在这里就不多说了.

不好意思,我悟性不是那么的好!
不过真的照你这样说,有几点反而晕了!
第一句: "有没有交换x,y的值和a,b已经没有关系了"
我的疑问是:你怎么知道它们之间没有关系?怎么判断?为什么把函数形参换成指针,就有关系了?
第二句: "这个程序是不需要返回值的.只是对变量之间进行值的替换,并不需要返回值"
我想你的意思是:这个程序没有返任何东西回去的功能吧?要不然,如果还有无需返回的调用,那又何需调用?
不好意思,是不是有点乱?
还有啊!你说这个程序只是对变量之间进行值的替换!我一直以为:函数的返回值就是调用函数的结果!
不知道这样认为有没有错!如果没错的话!那么在这个程序中,明明把变量的值交换了,也就是说调用这
个函数已经有了结果!问题就出在这里!为什么主程序不知道这个结果!

所以啊,说了这么多,就是一个主题问题:怎么确定函数有没有返回值?
怎么返回就不用了,书上说了主要有三种形式:RETURN和形参->实参和全局变量
虽然不大懂,但这暂时不搭界!
2007-06-28 13:22
快速回复:怎么确定函数的返回值?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.060684 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved