关于返回指向局部变量(对象)指针问题

dengfei007 2009-05-19 09:37:37
int *fun(...)
{
int *q=NULL;
return q;
}
我知道不要返回指向局部变量(对象)指针,因为一旦函数结束,局部对象(变量)被释放,返回的指针就变成了野指针了
但是我今天看了个资料有段代码的形式是这样的,它临时指针指向了NULL,这样可以吗??(这本书不一定说的对 因为我前面看这本书的时候都看出来有错误了)
...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 版主 2009-05-19
  • 打赏
  • 举报
回复
不是谦虚,是初学C++,以前都是搞delphi和.net,刚刚看了一半的<C++ Primer>,所以感觉基础不扎实,还有必要加强;
taodm 2009-05-19
  • 打赏
  • 举报
回复
既然怀疑书不好,何不换本好点的书。
liuka 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lianshaohua 的回复:]
int *fun(...)
{
int *q=NULL;
return q;
} 返回的是q,为什么不能用呢?当然可以用了,只是返回的时候,局部的q会被释放掉,会生成一个新的q返回到主函数中

int *fun(...)
{
int a=0;
return &a;//返回的是局部变量a的地址,当fun()结束的时候,是不能用的,因为a不存在了,而指向a的地址也是非法的了;
}

还望高手指教!
[/Quote]
int a = 0;//0在常量区,能返回正确的结果吧?
liuka 2009-05-19
  • 打赏
  • 举报
回复
应该是不能返回 栈内存 指针

char *test()
{
char a[] = "test";
return a;//error
}
chenzhp 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
人家说不能返回“局部变量的指针”,不是“局部变量自己”
你只有返回&q才是返回q的指针,返回q是返回“局部变量自己”,不是“局部变量的指针”
[/Quote]
精辟
arong1234 2009-05-19
  • 打赏
  • 举报
回复
过分谦虚就是骄傲啊,你说的本来就对,何必要高手指教:)
[Quote=引用 5 楼 lianshaohua 的回复:]
int *fun(...)
{
int *q=NULL;
return q;
} 返回的是q,为什么不能用呢?当然可以用了,只是返回的时候,局部的q会被释放掉,会生成一个新的q返回到主函数中

int *fun(...)
{
int a=0;
return &a;//返回的是局部变量a的地址,当fun()结束的时候,是不能用的,因为a不存在了,而指向a的地址也是非法的了;
}

还望高手指教!
[/Quote]
ztenv 版主 2009-05-19
  • 打赏
  • 举报
回复
int *fun(...)
{
int *q=NULL;
return q;
} 返回的是q,为什么不能用呢?当然可以用了,只是返回的时候,局部的q会被释放掉,会生成一个新的q返回到主函数中

int *fun(...)
{
int a=0;
return &a;//返回的是局部变量a的地址,当fun()结束的时候,是不能用的,因为a不存在了,而指向a的地址也是非法的了;
}

还望高手指教!
Jalien 2009-05-19
  • 打赏
  • 举报
回复
顶![Quote=引用 1 楼 arong1234 的回复:]
人家说不能返回“局部变量的指针”,不是“局部变量自己”
你只有返回&q才是返回q的指针,返回q是返回“局部变量自己”,不是“局部变量的指针”
[/Quote]
findcsdn 2009-05-19
  • 打赏
  • 举报
回复

int *fun(...)
{
int *q=NULL;
return q;
}

就是 return NULL;



lori227 2009-05-19
  • 打赏
  • 举报
回复
可以~~~只是返回的指针不能用而已~
arong1234 2009-05-19
  • 打赏
  • 举报
回复
人家说不能返回“局部变量的指针”,不是“局部变量自己”
你只有返回&q才是返回q的指针,返回q是返回“局部变量自己”,不是“局部变量的指针”

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧