关于一个指针!!!

wanghb89 2008-11-01 01:42:26
请教一下:
#include"iostream.h"
int *fun(int x)
{
int y=x*x;
return &y;}
void main(){
int a=5,*p;
p=fun(a);
cout<<*p<<endl;
cout<<*p<<endl;
}为什么在第二个*p中,*p是不能指向y,而第一个可以呢?
书上面说是局部变量的问题可是我还是不是很清楚!!
请各位大侠给点指导??
...全文
155 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghb89 2008-11-27
  • 打赏
  • 举报
回复
大家答的都很好!!谢谢大家的答案
太乙 2008-11-05
  • 打赏
  • 举报
回复
up一下~~~~呵呵~~~~~
lvyanyurong 2008-11-05
  • 打赏
  • 举报
回复
int*fun(int x)
{
int y=x*x;
return &y; //y为局部变量,局部变量存储在堆栈上,返回局部变量的引用为一种错误的使用方法,因为返回后,局部变量将被释放
}

cout < <*p < <endl; //*p的值输出正确是因为堆栈此时没有被更新,执行该语句后堆栈将被清空 cout < <*p < <endl; //*p的值输出不正确是因为堆栈此时已被更新



局部变量的作用域只在该函数范围内有效,在函数外部则不能使用
全局变量的有效范围是从定义位置开始到源文件结束。
sailing0123 2008-11-04
  • 打赏
  • 举报
回复
返回栈空间的地址,
修改为:
int fun(int x );
p 的空间还是在外面申请!
ylx1982 2008-11-04
  • 打赏
  • 举报
回复
呵呵,经典的引用做形参的题目。。
lunarfan 2008-11-02
  • 打赏
  • 举报
回复
int *fun(int x)
{
int y=x*x;
return &y;}
y已经释放了你还返回他的指针做什么?
然后你又在main中*p,你的程序不崩吗???
zgy1353246 2008-11-02
  • 打赏
  • 举报
回复
楼上答的都挺好的,UP
jia_xiaoxin 2008-11-01
  • 打赏
  • 举报
回复
int*fun(int x)
{
int y=x*x;
return &y; //y为局部变量,局部变量存储在堆栈上,返回局部变量的引用为一种错误的使用方法,因为返回后,局部变量将被释放
}

cout <<*p <<endl; //*p的值输出正确是因为堆栈此时没有被更新,执行该语句后堆栈将被清空
cout <<*p <<endl; //*p的值输出不正确是因为堆栈此时已被更新
yuhudie203 2008-11-01
  • 打赏
  • 举报
回复
在fun()中定义的y具有局部作用域,只在fun函数的{}内有效
当fun执行结束后被系统释放
yuhudie203 2008-11-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Jacky_Dai 的回复:]
C/C++ code

#include"iostream.h"

int *fun(int x)
{
int y = x*x;
return &y;
//问题处在这路,y位于堆栈内存中,用完就释放了
}

void main()
{
int a = 5,*p;
p = fun(a);//这里获得的内存里面的内容已被清楚
cout <<*p <<endl;
cout <<*p <<endl;
}
[/Quote]
正解
太乙 2008-11-01
  • 打赏
  • 举报
回复
是不是想说这个函数的堆栈问题?

在fun函数里,return那个值是在栈上,函数返回后,该内存将被析构!所以,p指向是为定义的!
Jacky_Dai 2008-11-01
  • 打赏
  • 举报
回复


#include"iostream.h"

int *fun(int x)
{
int y = x*x;
return &y;
//问题处在这路,y位于堆栈内存中,用完就释放了
}

void main()
{
int a = 5,*p;
p = fun(a);//这里获得的内存里面的内容已被清楚
cout <<*p <<endl;
cout <<*p <<endl;
}

太乙 2008-11-01
  • 打赏
  • 举报
回复
什么意思?没明白!!

33,317

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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