社区
C++ 语言
帖子详情
关于函数返回值的问题!(它到底存储在哪?)
tseny
2004-05-05 03:24:48
如函数
1.int fun()
2.string fun()
请解释一下?
是放在主存中还是寄存器中,特别讲一下返回对象时(如2. 虽不太常用到吧!?)
多谢!
...全文
109
13
打赏
收藏
关于函数返回值的问题!(它到底存储在哪?)
如函数 1.int fun() 2.string fun() 请解释一下? 是放在主存中还是寄存器中,特别讲一下返回对象时(如2. 虽不太常用到吧!?) 多谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
积木
2004-05-06
打赏
举报
回复
2.string fun()
这个东西很有趣,在C++中通常将其处理为
fun(string& __result)
调用的时候例如
string str = fun();
就可能变成
string __temp;
fun(__temp);
str(__temp);
所以说这种调用会产生一个临时对象的。
Wolf0403
2004-05-06
打赏
举报
回复
三井:最后一句应该是“所以说这种调用不会产生一个临时对象的。”
吧。。。
如果
string fun()
{
return string("Hello");
}
编译器几乎都会优化掉这个 string 匿名对象而变成三井所说的形式。
但是
string fun()
{
string rt("Hello");
// ... more operations here
return rt;
}
很多时候也许就不会优化了。
Dev-C++ 和 VC debug 模式似乎是这样子的:只能优化匿名对象。
02051223
2004-05-06
打赏
举报
回复
楼上的见解很深呀!
平时只是考虑他是放在栈中就没有多想了!
看了你的帖子后又学到了一招。
哈哈
playmud
2004-05-05
打赏
举报
回复
问:ra3(可乐)
生命结束指的是什么?
vcchunhong
2004-05-05
打赏
举报
回复
反汇编 不懂看~呵~
lxh1010
2004-05-05
打赏
举报
回复
放在栈中,反汇编就可以看到
xiaozhong
2004-05-05
打赏
举报
回复
应该是防在栈里面
ra3
2004-05-05
打赏
举报
回复
放栈内存中;
会新建一个 string 对象放在栈内存中, 比如
string str = fun();
这一行调用完成后 str 的生命结束。
HashCodeWithJava
2004-05-05
打赏
举报
回复
有的是存在堆栈里面.不过我看了有很多标准的C代码是存放在ax寄存器的.
你可以在visual C++里面按反汇编代码,查看一下函数的汇编代码就清楚了!
FoxMale007
2004-05-05
打赏
举报
回复
MAIN函数也是函数
函数返回值是放在堆栈里的啊
ghiewa
2004-05-05
打赏
举报
回复
呵 又学到一手
Iforgot
2004-05-05
打赏
举报
回复
好像C++不能返回对象,除非该对象是函数外面创建的(这时返回就没意义了)。
你可以自己在某个函数里创建对象,返回,然后看看结果。对象肯定是没了的。
在C++里,对象的生命周期为函数执行域,函数退出时,对象也销毁了。
julyclyde
2004-05-05
打赏
举报
回复
是应该在AX的
汇编时代的约定
contos7依赖包,免费下载 某些人真恶心拿着资源抢分抢钱 此处也有免费下载:http://mirrors.aliyun.com/centos/7/os/x86-64/Packages/
bzip2-devel-1.0.6-13.el7.i686.rpm centos-release-scl-2-3.el7.centos.noarch.rpm centos-release-scl-rh-2-3.el7.centos.noarch.rpm cloog-ppl-0.15.7-1.2.el6.x86_64.rpm cpp-4.4.7-4.el6.x86_64.rpm cpp-4.8.5-44.el7.x86_64.rpm dejavu-fonts-common-2.33-6.el7.noarch.rpm dejavu-sans-fonts-2.33-6.el7.noarch.rpm fontconfig-2.13.0-4.3.el7.x86_64.rpm fontpackages-filesystem-1.44-8.el7.noarch.rpm freetype-2.8-14.el7.src.rpm freetype-2.8-14.el7.x86_64.rpm freetype-devel-2.8-14.el7.x86_64.rpm gcc-4.4.7-4.el6.x86_64.rpm gcc-4.8.5-44.el7.x86_64.rpm gcc-c++-4.4.7-4.el6.x86_64.rpm gcc-c++-4.8.5-44.el7.x86_64.rpm gcc-gfortran-4.8.5-44.el7.x86_64.rpm glibc-2.17-307.el7.1.x86_64.rpm glibc-2.17-317.el7.x86_64.rpm glibc-common-2.17-317.el7.x86_64.rpm glibc-devel-2.12-1.132.el6.x86_64.rpm glibc-devel-2.17-307.el7.1.x8
个人开发轻量级资产管理系统,python3+Django2+adminLTE,大佬请忽略。.zip
个人开发轻量级资产管理系统,python3+Django2+adminLTE,大佬请忽略。
文件加密器原创文件加密器 -Python 开发的密码加密解密工具.zip
这款文件加密器是一款基于 Python 开发的原创工具,旨在为用户提供便捷的文件加密与解密功能。用户可通过自行设置密码,对文件进行加密处理,有效保护文件隐私;解密时,输入正确密码即可恢复文件原貌,操作简单直观。 工具特点如下: 自主密码管理:加密和解密密码由用户自行输入,确保加密过程的安全性与私密性。 源码与可执行文件兼备:提供 Python 源码及打包后的 EXE 文件,满足不同用户需求 —— 懂编程的用户可查看、修改源码,普通用户可直接运行 EXE 文件使用。 安全性保障:经检测无毒,可放心使用(注:下载后建议再次通过安全软件扫描确认)。(包含源码和打包 EXE,文件大小 56.0M) 此外,开发者还提供了多张屏幕截图(如操作界面展示等),可供用户提前了解工具的使用场景和界面样式,进一步降低使用门槛。
python初学者写的班级管理系统(单个.py文件).zip
python初学者写的班级管理系统(单个.py文件)
spring-jcl-5.0.5.RELEASE.jar中文文档.zip
1、压缩文件中包含: 中文文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册。
C++ 语言
65,192
社区成员
250,525
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章