社区
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作为返回值,而且结果还正确了。请问这是为什么?
...全文
48
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
打赏
举报
回复
算是偶然性正确吧。
因为还没有人改写那块内存。
若是中间再有其它内存操作,
结果就很可能不正确了。
有关new出
一个
指针
,将该
指针
指向另
一个
指针
,释放不掉的
问题
问题
一: 在编写代码的时候,我遇到了这样
一个
问题
:定义
一个
指针
,将这个
指针
指向另外
一个
指针
,在完成特定功能的操作之后,定义的
指针
指向的那个
指针
可能已经被释放,而这时,如果需要释放定义的这个
指针
,就会报错。 代码如下:int* position=new int [10]; position=pos; . . . delete pos; delete position;// 这里会报错 定义了
一个
一个
指针
占几个字节?原理是什么呢?
一个
指针
占几个字节的
问题
,感觉会C语言的同学都知道。但是在面试过程中,面了几个同学,不是答忘记了,就是两个、四个的瞎蒙。。。 那么,
一个
指针
到底占几个字节呢? 其实,这个
问题
很简单,稍微上网一搜,你就知道:
一个
指针
在64位的计算机上,占8个字节;
一个
指针
在32位的计算机上,占4个字节。 这么简单的
问题
,为什么面试官愿意问呢?其实这个
问题
不是在考你的记忆能力,是在考察你的计算机基础能力。就比如,...
C语言
指针
常见
问题
汇总
函数返回值类型 (*
指针
变量名) (函数参数列表);“函数返回值类型”表示该
指针
变量所指向函数的 返回值类型;“函数参数列表”表示该
指针
变量所指向函数的参数列表。那么怎么判断
一个
指针
变量是指向变量的
指针
,还是指向函数的
指针
变量呢?看变量名的后面有没有带有形参类型的圆括号,如果有就是指向函数的
指针
变量,即函数
指针
,如果没有就是指向变量的
指针
变量。函数
指针
没有++和 --运算实际当中,需要声明
一个
复杂
指针
时,如果把整个声明写成上面所示的形式,对程序可读性是一大损害。
指针
=
指针
的
问题
所以,我们可以得出
一个
结论,
指针
1 =
指针
2 其实是改变
指针
1的指向为
指针
2所指向的位置。
指针
漂移C语言,有关C++
指针
漂移
问题
的解决方法
虽然说C++编程语言功能真的是非常的强大,但是总会出现一些大大小小的错误。不知道大家在进行C++编程的时候,是否会产生
指针
漂移的
问题
呢?那么大家有没有想过这个
问题
的产生来源呢?其实总的来说,这主要就是和C++对象模型有一定的关系。今天小编会在这篇教程中详细的为大家分析一下,
问题
的产生原因以及处理的方法。下面我们就一起来学习一下:有关C++
指针
漂移
问题
的解决方法。一、
问题
产生小编在第一次遇见这个
问题
...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章