首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于return局部变量的有关问题

2013-01-12 
一个关于return局部变量的问题有这么一个简单的程序:#includeiostreamusing namespace stdint func(){i

一个关于return局部变量的问题
有这么一个简单的程序:

#include<iostream>

using namespace std;

int func()
{
  int a = 1;
  return a;
}

int main()
{
  int Val;
  Val = func();
  return 0;
}

请教各位牛人,当一个函数返回局部变量的时候,函数调用一旦结束局部变量就会被销毁,上面的程序中=号操作是从哪取值赋给Val的呢?也就是说return如果是对返回值a进行复制,它会把a的值复制后存储在哪呢?然后=号操作又是如何知道从哪取值赋给Val?
[解决办法]
楼主看下汇编代码 看看函数调用过程
[解决办法]
返回局部变量的拷贝 然后局部变量销毁 这个拷贝可以是在寄存器中可以是在内存中这个和实现有关
[解决办法]
就LZ的代码,a放在了EAX。

[解决办法]
引用:
就LZ的代码,a放在了EAX。

如9楼所说,一般情况函数的返回值放在%eax寄存器中由函数调用者去读,看看汇编的东西就明白了
[解决办法]
alt+8  自己反汇编看下。返回值 绝大部分都是放在EAX寄存器中
[解决办法]
引用:
楼主看下汇编代码 看看函数调用过程

引用:
就LZ的代码,a放在了EAX。

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

热点排行