CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

求助:关于函数返回值为局部变量

楼主Dugowe(我不是火星人,我家狗狗才是..)2006-03-16 12:37:06 在 C/C++ / C++ 语言 提问

#include   <iostream>  
  int   funct(int   x);  
  int   main()  
  {  
          int   temp,result;  
          cout   <<   "Please   enter   an   int:"<<endl;  
          cin   >>   temp;  
          result   =   funct(temp);  
          return   0;  
  }  
  int   funct(int   x)  
  {          
          int   dou;  
          dou   =   2   *   x;  
          result   dou;  
  }  
   
  很简单的程序,我就是想知道函数得返回值dou是局部变量,那么这个函数是怎么把它赋值给result的??  
  请高手详细解释一下,谢谢!! 问题点数:40、回复次数:12Top

1 楼healer_kx(甘草(楼主揭贴吧,我们这些上班灌水的也不容易))回复于 2006-03-16 12:39:59 得分 5

dou的值放到某寄存器,比如EAX。  
  函数返回后。  
   
  mov   [result],   eaxTop

2 楼citywanderer2005(流浪狗)回复于 2006-03-16 12:48:47 得分 0

我觉得跳出函数后,dou所占内存被释放,只是返回一个值的拷贝给result而已。  
  呵呵,个人意见Top

3 楼1982pc()回复于 2006-03-16 12:50:49 得分 0

其实就是返回的dou值的拷贝~~~~Top

4 楼bm1408(向va_list学习~不用VC好多年~)回复于 2006-03-16 13:13:44 得分 10

int   funct(int   x)  
  {          
          int   dou;  
          dou   =   2   *   x;  
          result   dou;  
  }  
  return   dul时,编译会把dou在外部生成一个临时变量,  
  执行  
   
  }  
  后dou失效,但那个变量还存在,后面就好理解了...Top

5 楼Dugowe(我不是火星人,我家狗狗才是..)回复于 2006-03-16 13:18:22 得分 0

那它生成的那个临时变量怎么处理??Top

6 楼ugg(逸学堂(exuetang.net))回复于 2006-03-16 13:19:18 得分 10

result   dou;  
  系统给你维护dou临时对象的拷贝赋值给result。  
  如果lz用VS.net2005,在编译选项中有一个设置,可以不用  
  生成临时对象拷贝的方式来完成赋值,而是临时对象直接到result赋值。Top

7 楼zh2817()回复于 2006-03-16 14:47:27 得分 0

对于result   dou;你的目的是  
  dou临时对象的拷贝赋值给result,但是这样是不对的,因为result不是类或结构类型申明Top

8 楼wshcdr(dd)回复于 2006-03-16 14:53:46 得分 0

其实就是返回的dou值的拷贝~~~~  
  Top

9 楼greenteanet(扎扎实实打基础,保持一颗平常心。)回复于 2006-03-17 12:58:19 得分 0

利用临时变量进行拷贝Top

10 楼fiftymetre(50米深蓝)回复于 2006-03-17 13:04:16 得分 10

临时对象,在C++表层和内部实施非常至多.  
   
  http://dev.csdn.net/article/17/17610.shtmTop

11 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-17 17:15:43 得分 5

返回值dou是局部变量,那么这个函数是怎么把它赋值给result的?  
  -----------------------------  
  返回前先将   变量的   值保存到一个临时空间,  
  释放变量   ,  
  然后,在主调函数中,  
  这个临时变量的值被赋值到接收变量中   ..  
  完成   ..Top

12 楼Dugowe(我不是火星人,我家狗狗才是..)回复于 2006-03-17 18:00:01 得分 0

To:   lixingzhong  
  那个保存变量的临时空间什么时候释放??Top

相关问题

  • 关于函数返回局部变量
  • 局部变量作返回值
  • $$$谁给我讲解一下局部变量在函数返回之后就被销毁的具体含义
  • $$$谁给我讲解一下局部变量在函数返回之后就被销毁的具体含义
  • 问一下,局部变量做为可变参数,在代入函数前,是否有必要先赋值?
  • 函数内局部变量的地址问题!
  • 关于递归函数的局部变量问题
  • 关于返回局部变量问题..请教下大家
  • help!return是不是不能返回局部变量?
  • 关于全局变量,main()中局部变量与函数参数的问题

关键词

  • 函数
  • 拷贝
  • dou
  • 赋值
  • 局部变量
  • 变量
  • 临时
  • 返回
  • funct
  • 对象

得分解答快速导航

  • 帖主:Dugowe
  • healer_kx
  • bm1408
  • ugg
  • fiftymetre
  • jixingzhong

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo