社区
C++ 语言
帖子详情
关于返回指向局部变量(对象)指针问题
dengfei007
2009-05-19 09:37:37
int *fun(...)
{
int *q=NULL;
return q;
}
我知道不要返回指向局部变量(对象)指针,因为一旦函数结束,局部对象(变量)被释放,返回的指针就变成了野指针了
但是我今天看了个资料有段代码的形式是这样的,它临时指针指向了NULL,这样可以吗??(这本书不一定说的对 因为我前面看这本书的时候都看出来有错误了)
...全文
127
11
打赏
收藏
关于返回指向局部变量(对象)指针问题
int *fun(...) { int *q=NULL; return q; } 我知道不要返回指向局部变量(对象)指针,因为一旦函数结束,局部对象(变量)被释放,返回的指针就变成了野指针了 但是我今天看了个资料有段代码的形式是这样的,它临时指针指向了NULL,这样可以吗??(这本书不一定说的对 因为我前面看这本书的时候都看出来有错误了)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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是返回“局部变量自己”,不是“局部变量的指针”
返回
指向
局部变量
的
指针
或引用的带来的
问题
讨论
返回
指向
局部变量
的
指针
才有
问题
, 函数退栈之后,
局部变量
消失,
指针
将
指向
未知区域,所以出现
问题
。
返回
局部变量
的引用也是绝对不可以的。 引用只是变量的一个别名,变量本体都不存在了,引用当然也...
返回
指向
局部变量
的
指针
或引用
返回
指向
局部变量
的
指针
才有
问题
, 函数退栈之后,
局部变量
消失,
指针
将
指向
未知区域,所以出现
问题
。
返回
局部变量
的引用也是绝对不可以的。 引用只是变量的一个别名,变量本体都不存在了,引用当然也...
函数
返回
局部变量
的
指针
或引用
一般来说,由于在离开函数后
局部变量
会被释放,所以是不允许函数
返回
指向
局部变量
的
指针
或引用的。我们往往需要遵循如下原则:引用作为
返回
值,必须遵守以下规则:(1)不能
返回
局部变量
的引用。主要原因是
局部变量
...
函数
返回
局部变量
/局部
指针
c语言
返回
局部变量
局部
指针
局部数组 内存四区模型 讨论这个
问题
之前,一定要理解堆区和栈区的工作原理,数据的存储区域(参考内存四区模型),另外一定不要
返回
局部
对象
或变量的引用和
指针
。
局部变量
...
vector保存
局部变量
和
指向
局部变量
的
指针
区别
vector保存
指向
局部变量
的
指针
:不可以,因为
局部变量
离开作用域后,就会释放,
指向
局部变量
的
指针
会
指向
未知的地址空间,
指向
的内容未知。 demo1:验证vector即使
局部变量
也是堆上上分配。 结果:
返回
的vector中...
C++ 语言
64,685
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章