社区
C语言
帖子详情
一个有关指针的问题
葛俊在新泽西
2003-10-15 06:53:37
#include "stdafx.h"
char * test()
{
char ch_test[100]="test";
return ch_test;
}
int main(int argc, char* argv[])
{
printf(test());
getchar();
return 0;
}
在函数调用结束时ch_test指向的内存应该是无效的,但是test()却以内部指针ch_test作为返回值,而且结果还正确了。请问这是为什么?
...全文
47
7
打赏
收藏
一个有关指针的问题
#include "stdafx.h" char * test() { char ch_test[100]="test"; return ch_test; } int main(int argc, char* argv[]) { printf(test()); getchar(); return 0; } 在函数调用结束时ch_test指向的内存应该是无效的,但是test()却以内部指针ch_test作为返回值,而且结果还正确了。请问这是为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
daizh
2003-10-15
打赏
举报
回复
楼主的问题:
你运行正确,只能是偶然。对于函数返回值的讨论很多以前的帖子讨论过,你可以参考看看。对于你这个具体问题来说,你违背了“函数中返回值不能是局部变量或临时变量”的原则。
wangyangcheng
2003-10-15
打赏
举报
回复
借一下樓主的寶地﹐在下面這一小段代碼中﹐
#include <iostream>
#include <vector>
using namespace std;
vector<int>* seq(int pos)
{
static vector<int> seq_vec;
for(int i=seq_vec.size();i<=pos;i++)
seq_vec.push_back(i);
return &seq_vec;
}
int main()
{
int size;
cout<<"Please enter the size:";
cin>>size;
vector<int>* ptr_seq=seq(size);
for(int i=0;i<ptr_seq->size();i++)
cout<<(*ptr_seq)[i]; //若把這里改成 cout<<*ptr_seq++;就會報錯。
cout<<endl; //按iterator的實現來說﹐這應該屬于指針的算朮運
return 0; //算沒錯呀?為什么呢?
}
Thanks!
Hot_Forever
2003-10-15
打赏
举报
回复
不对啊,我把你的程序跟踪了一下
char *s=test();
printf("%s",s); //这时候输出s为空,证明test的返回值并没有正确的赋给s
lemon520
2003-10-15
打赏
举报
回复
理论上说是ch_test指向的内存是未知的,是保存的最近一次操作的结果。
很显然,你在返回指针后没有进行其他操作,所以结果未变。
zhuixe
2003-10-15
打赏
举报
回复
ch_test[100]="test";
ch_test所指向的内存虽然被释放了,但其中的数据暂时还没被改变
luopeng
2003-10-15
打赏
举报
回复
因为那块内存虽然释放了,但没有其他的应用程序分配更改它,
当然不会出错,可是现在你能读,你写一下那块区域试试呢?
马上就会出错了哈。
rtdb
2003-10-15
打赏
举报
回复
算是偶然性正确吧。
因为还没有人改写那块内存。
若是中间再有其它内存操作,
结果就很可能不正确了。
2小时精通C++智能
指针
智能
指针
可以解决普通
指针
存在的悬垂
指针
、野
指针
、资源泄露等
问题
本教程的主要的演示平台为Qt 4.11和g++ 7.4。学员也可以使用Visual Studio 2017。 教程中从最简单的例子入手,覆盖智能
指针
的常用技术点,并穿插...
有关new出
一个
指针
,将该
指针
指向另
一个
指针
,释放不掉的
问题
在编写代码的时候,我遇到了这样
一个
问题
:定义
一个
指针
,将这个
指针
指向另外
一个
指针
,在完成特定功能的操作之后,定义的
指针
指向的那个
指针
可能已经被释放,而这时,如果需要释放定义的这个
指针
,就会报错。...
一个
指针
占几个字节?原理是什么呢?
一个
指针
占几个字节的
问题
,感觉会C语言的同学都知道。但是在面试过程中,面了几个同学,不是答忘记了,就是两个、四个的瞎蒙。。。 那么,
一个
指针
到底占几个字节呢? 其实,这个
问题
很简单,稍微上网一搜,你就...
C语言
指针
常见
问题
汇总
那么怎么判断
一个
指针
变量是指向变量的
指针
,还是指向函数的
指针
变量呢?看变量名的后面有没有带有形参类型的圆括号,如果有就是指向函数的
指针
变量,即函数
指针
,如果没有就是指向变量的
指针
变量。函数
指针
没有++和...
指针
=
指针
的
问题
所以,我们可以得出
一个
结论,
指针
1 =
指针
2 其实是改变
指针
1的指向为
指针
2所指向的位置。
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章