c++里面函数的参数在内存中是怎么存储的?

2024-11-15 12:03:11
推荐回答(3个)
回答1:

就如你问题中提到的,当函数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就会被处理掉

回答2:

如果变量不多于三个(四个?)时,是使用寄存器传值的,进入到函数里面就是直接使用寄存器;如果超过四个,那就要借助堆栈(STACK),即调用函数前先把数值压栈,然后在函数里面把堆栈里的数据取到寄存器中运算,函数调用结束时,堆栈还原就自动把变量去掉了。

回答3:

建议你用VC吧汇编文件也编译出来看看汇编代码 这些变量是怎么处理的就可以理解了