由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++菜问: 怎么这样也可以?
相关主题
菜鸟求教,一个c++的困惑请教这个程序里用到了什么constructor啊?有几个copy constructor?
大家来做题C++。A aimple C++ question
小白请教一个C++问题:问什么我不能把两个指针=起来?没有经过构造函数???
请问一个exception题目问个指针array 的简单问题
一个指向指针的指针的引用?What is wrong with the code?
问个char*的问题reverse words, not the Microsoft one!!!
关于c++的constructor的面试题一个古怪的C程序运行错误。
为什么foo1可以而foo2不行?[C++ boost::interprocess] 讨论贴
相关话题的讨论汇总
话题: int话题: c++话题: f0话题: f3话题: return
进入Programming版参与讨论
1 (共1页)
b********r
发帖数: 1080
1
不是说不可以'返回一个指向临时变量的指针'么?
下面的例子在VC和g++下都正确执行了.
#include
using namespace std;
int* fun()
{
int f0=1;
int* f3=&f0;
return f3;
}
int main()
{
int* k=fun();
cout<<++(*k)< return 0;
}
结果: 2.
p***o
发帖数: 1252
2
so what? code should work under ANY circumstance

【在 b********r 的大作中提到】
: 不是说不可以'返回一个指向临时变量的指针'么?
: 下面的例子在VC和g++下都正确执行了.
: #include
: using namespace std;
: int* fun()
: {
: int f0=1;
: int* f3=&f0;
: return f3;
: }

b********r
发帖数: 1080
3
我的理解是指针指向了函数中的临时变量.函数返回时,变量被自动消除.
这是指针指向的地址应该被释放了.所以结果至少应该是undefined.
我理解错了?

【在 p***o 的大作中提到】
: so what? code should work under ANY circumstance
t****t
发帖数: 6806
4
理解得很好, 但是你有没有理解undefined是什么意思呢?

【在 b********r 的大作中提到】
: 我的理解是指针指向了函数中的临时变量.函数返回时,变量被自动消除.
: 这是指针指向的地址应该被释放了.所以结果至少应该是undefined.
: 我理解错了?

s****t
发帖数: 698
5

undefine就是留给编译器自己去发挥,
但是很可能不受你控制。


【在 t****t 的大作中提到】
: 理解得很好, 但是你有没有理解undefined是什么意思呢?
w*********l
发帖数: 1337
6
不能算undefined吧?这种情况就算产生segmentation fault都算你幸运。很多的情况
下你是直接读写另一个变量了。C/C++是不会检查你读写的指针的语义的,能读就读,
能写就写。

【在 b********r 的大作中提到】
: 我的理解是指针指向了函数中的临时变量.函数返回时,变量被自动消除.
: 这是指针指向的地址应该被释放了.所以结果至少应该是undefined.
: 我理解错了?

l*****0
发帖数: 238
7
try this:
#include
using namespace std;
int* fun()
{
int f0=1;
int* f3=&f0;
return f3;
}
int fun0()
{
int ff[256];
memset(ff, 5, 1024);
return 0;
}
int main(int argc, _TCHAR* argv[])
{
int* k=fun();
fun0();
cout<<++(*k)< return 0;
}
now the output becomes 84215146, which is 0x05050506
did you figure out anything?
your k points to a stack memory which hold whatever value happen to be there
O*******d
发帖数: 20343
8
LZ should spend sometime to refresh on how stack work.
1 (共1页)
进入Programming版参与讨论
相关主题
[C++ boost::interprocess] 讨论贴一个指向指针的指针的引用?
对指针很熟的高手能否给菜鸟分步骤讲解一下这个单链翻转是怎么实现的?问个char*的问题
请问C++中局部未使用的变量在优化的时候会去掉么?关于c++的constructor的面试题
还是咱们这儿,亲。为什么foo1可以而foo2不行?
菜鸟求教,一个c++的困惑请教这个程序里用到了什么constructor啊?有几个copy constructor?
大家来做题C++。A aimple C++ question
小白请教一个C++问题:问什么我不能把两个指针=起来?没有经过构造函数???
请问一个exception题目问个指针array 的简单问题
相关话题的讨论汇总
话题: int话题: c++话题: f0话题: f3话题: return