引用三楼的高手:
就是没起到作用,但是实际上你却调用了。这个问题很典型,当你引用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和形参->实参和全局变量
虽然不大懂,但这暂时不搭界!