注册 登录
编程论坛 C++教室

关于变量返回值的小问题!

newCpp 发布于 2009-10-12 19:57, 522 次点击
程序代码:
#include <iostream>
using namespace std;
int MAX(int x,int y)
{int z;


return (x>y)?x=y:y;
}
int main()
{
int a,b,c;
cin>>a>>b;
c=MAX(a,b);
cout<<a<<" "<<b<<" "<<c<<endl;
return 0;
}

这样的话,只有c接收到了return 返回回来的值

a同b的数值如果没有使用引用或指针的话,都不会有变化!
那么除了这种c=MAX(a,b);
还有别的什么方式可以接收到返回回来的值?
3 回复
#2
东海一鱼2009-10-12 22:16
如果你知道函数是怎样接受参数,怎样返回结果的。那末这个问题就太简单了。

函数参数传递有3种形式:

1、约定内存地址方式,调用方和被调用方约定好内存地址传递参数。这种方式太死板,现在已无人使用。

2、约定寄存器传递,用寄存器传递参数。这种方法速度最快,缺点是x86寄存器太稀少,参数多时还要结合3的方法。目前Delphi的函数调用方式就寄存器法。

3、堆栈传递法,调用方把参数压入堆栈,被调函数从堆栈中将参数取出。目前绝大多数语言编译器都采用此法。

2、3两种方法的函数结果一般都通过eax寄存器返回。大于32位的结果通过edx\eax返回。浮点结果通过浮点栈顶寄存器返回。

明白了上面的,实际上你就可以设计各种函数的返回方式。通过向其他寄存器写值、用堆栈传递要返回结果的缓冲区、........
#3
lampeter1232009-10-13 12:40
楼上的解释有点复杂。。。
#4
mengfp2009-10-14 11:56
定义引用或者地址传参
1