社区
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作为返回值,而且结果还正确了。请问这是为什么?
...全文
51
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个字节。 这么简单的
问题
,为什么面试官愿意问呢?其实这个
问题
不是在考你的记忆能力,是在考察你的计算机基础能力。就比如,...
指针
=
指针
的
问题
所以,我们可以得出
一个
结论,
指针
1 =
指针
2 其实是改变
指针
1的指向为
指针
2所指向的位置。
指针
漂移C语言,有关C++
指针
漂移
问题
的解决方法
虽然说C++编程语言功能真的是非常的强大,但是总会出现一些大大小小的错误。不知道大家在进行C++编程的时候,是否会产生
指针
漂移的
问题
呢?那么大家有没有想过这个
问题
的产生来源呢?其实总的来说,这主要就是和C++对象模型有一定的关系。今天小编会在这篇教程中详细的为大家分析一下,
问题
的产生原因以及处理的方法。下面我们就一起来学习一下:有关C++
指针
漂移
问题
的解决方法。一、
问题
产生小编在第一次遇见这个
问题
...
一个
int型
指针
占几个字节,跟
指针
的类型有关系吗?(2020.11)
由于这两天看的数据结构都跟C语言相关,这2天的代码中都遇到了
指针
的
问题
,所以今天就看了一些关于
指针
的博客,然后突然想到
一个
问题
,
一个
int型的
指针
占几个字节。
一个
文章中是这么画的 我也还没搞懂他到底是占几个字节。 如果你没搞懂这个
问题
,那应该你还没搞懂,
指针
里面存的是什么。 malloc() ...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章