关于函数返回值的问题
时间:2011-12-27
来源:互联网
函数内部的变量存在栈区,当函数有返回值时是不是有这几种情况?返回一个指向栈区的地址(错误)。返回一个指向堆区的指针,返回一个指向常量区的指针(比如字符串)。返回一个常量。现在我搞不懂这个常量,他也是存在常量区吗?再有就是如果我返回函数形参,是不是也是返回一个栈上的一个副本。
作者: humingchun 发布时间: 2011-12-27
作者: xulai1001 发布时间: 2011-12-27
作者: humingchun 发布时间: 2011-12-27
比如
int fun(int a){
int b = a;
return b;
}
b指向栈区,这个没疑问
int fun(int a){
return a;
}
这里应该也是指向栈区吧?
牛牛们 求教啊
作者: humingchun 发布时间: 2011-12-27
int fun(int a, int b){
// operations
return 0;
}
那这个常数0呢?
寄存器的一个值?还是常量区里的啊 纠结啊
作者: humingchun 发布时间: 2011-12-27
一般将值存到了EAX寄存器里,
或者存到了全局变量里,
或者是某个变量的引用或者指针指向的地方
作者: agoago_2009 发布时间: 2011-12-27
int fun(int a){
return a;
}
形如这种的应该是返回栈内的一个值?这种说法对不对啊
无名 12:32:21
如果是函数返回值直接返回一个常量呢 比如 return 1; 越搞越晕了
大熊_c 12:33:02
是的
无名 12:34:30
int fun(int a){
return a;
} 那这种做法是不是不可取啊 是不是会有垃圾值的情况?
大熊_c 12:34:44
是的
大熊_c 12:34:52
可以先不管栈的概念
大熊_c 12:35:08
int fun(int a){
return a;
}
这个函数里,a是个局部变量
无名 12:35:16
嗯
大熊_c 12:35:23
也就是说,离开了这个函数
a这个局部变量就不存在了
无名 12:35:38
那返回1 比如return 1; 这种怎么理解呢
大熊_c 12:35:59
那么,把局部变量a返回出去
这个结果是不能保证的,因为局部变量已经不存在了
大熊_c 12:36:17
1不是局部变量,是个常量
返回不会有问题
作者: humingchun 发布时间: 2011-12-27
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28