社区
C++ 语言
帖子详情
关于函数返回值的问题!(它到底存储在哪?)
tseny
2004-05-05 03:24:48
如函数
1.int fun()
2.string fun()
请解释一下?
是放在主存中还是寄存器中,特别讲一下返回对象时(如2. 虽不太常用到吧!?)
多谢!
...全文
108
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的
汇编时代的约定
c语言
函数
返回值
存储
,C语言内
存储
器分配及
函数
返回值
的解析
C语言内存分配及
函数
返回值
的解析。C语言的内存分配主要如下:(1)栈区:在执行
函数
时,
函数
内局部变量(不包含static变量)、
函数
返回值
的
存储
单元在栈区上创建,
函数
执行结束时这些
存储
单元自动被释放。栈区内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(2)堆区:即动态分配内存分配,程序在运行时用malloc(calloc,realloc等)申请的内存,程序员自己负责用fre...
shell
函数
返回值
不是$? !!!
shell
函数
返回值
不是$? !!! shell中美元符号的使用 找了半天原因,就在上篇博文里,我在用shell写素数时,发现了一个
问题
,老师所说的$?代表
函数
返回值
的说法并不准确,所以查了一下,然后给用代码大家展示一下具体效果 $? 最后运行的命令的结束代码(
返回值
) //
函数
调用之后执行了一条 echo #!/bin/bash f1() { declare -i number=30 ...
函数
的
返回值
存储
问题
我们往往将
函数
里面的某个变量作为
函数
的
返回值
,但是我们知道,
函数
内部定义的变量生命周期只存在于
函数
体内,出了这个
函数
生命周期就结束了, 将其作为
返回值
,难道不会出
问题
吗? 如果不会出
问题
,那这个
返回值
存储
在哪里呢? 之所以不会出
问题
,是因为什么呢,难道被作为
返回值
的变量
存储
位置发生了变化?
返回值
的
存储
位置是固定的吗? 能够
存储
多大容量的
返回值
? 带着上面的疑问,我准备研究一下。 调用
函数
时,
函数
的
返回值
存放的位置具体在哪里呢?按照概念来说,
函数
的
返回值
应该放在被调用
函数
运行结束之后,主调
函数
14.
函数
返回值
为引用?
函数
返回值
可以是引用吗? 当然可以,只是在
函数
返回引用的时候需要注意几点。以下给出讨论!
函数
在
返回值
的时候,会产生一个临时变量作为
函数
返回值
的副本;而
函数
在返回引用的时候,不会产生副本!那么既然是引用,那么
到底
是引用谁呢? 首先,我们知道要清楚
函数
返回引用的几种常见形式: 1)引用
函数
的参数,当然该参数(s1、s2)也是一个引用。 const string &short...
linux shell
函数
返回值
问题
在linux shell脚本中使用
函数
时,需要注意
函数
返回后,
返回值
的使用,不然很容易出
问题
。具体来说,shell脚本
函数
通过return返回后,
返回值
会保存在$?中。需要注意的是,$?会在
函数
返回后很快变回0值,所以应在
函数
返回后尽快将$?保存在变量中,然后后续通过该变量来访问
返回值
,而不是直接通过$?来进行后续处理。 如下代码,尽管D2确实是个目录,但是得到的结果始终会是$A是一个REG文件,这是因为
函数
testFile返回后做了些其他的事,在后续进行$?值判断时,它已变回了0. #! /bin/bas
C++ 语言
65,189
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章