就如你问题中提到的,当函数int MAX(int x,int y)被赋予实参时,如下面代码所示
int main()
{
int a=3,b=4;
MAX(3,4);
return 0;
}
此时函数MAX接收到的是a和b的拷贝值,也就是说函数在堆里面开辟一个空间,这个空间保存着两个值,分别是3和4,函数接下来操作的数值都是这个堆空间上的数值,跟main函数里面的a和b无关,当函数执行完毕时(也就是return执行完)会回收空间,这时堆空间里面的3和4就会被处理掉
如果变量不多于三个(四个?)时,是使用寄存器传值的,进入到函数里面就是直接使用寄存器;如果超过四个,那就要借助堆栈(STACK),即调用函数前先把数值压栈,然后在函数里面把堆栈里的数据取到寄存器中运算,函数调用结束时,堆栈还原就自动把变量去掉了。
建议你用VC吧汇编文件也编译出来看看汇编代码 这些变量是怎么处理的就可以理解了