一个关于c的指针问题。。。。。。。。。。。〉〉〉〉〉〉〉〉〉〉〉〉

stanely 2002-01-02 07:45:48
int *p;
void my()
int y;
{
y=3;
p=&y;
}

main()
{
my();
printf("%d",*p);
}

结果是什么呢?
...全文
140 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
still_me 2002-01-03
  • 打赏
  • 举报
回复
sorry!
Richardw 2002-01-03
  • 打赏
  • 举报
回复
有人会这么写吗?是不是没事了找麻烦?
ThinkX 2002-01-03
  • 打赏
  • 举报
回复
无法知道,千万别这么用
florist2000 2002-01-03
  • 打赏
  • 举报
回复
入门问题
程序有错误
结果可能错,可能没错,就看局部变量释放后,该内存有无立即被修改.
01101230 2002-01-02
  • 打赏
  • 举报
回复
这段程序出来的结果还是3!
但并不表明程序没有错。
错误发生在printf ("%d",*p)
指针p指向的地址没变,也就是局部变量y的地址。可是在MY()函数运行过后这个地址的内容已经改变了,这时*p就变成了奇怪的数字了。
至于为什么结果还是3,我还想不清楚,不过可以肯定,当MY()结束后,*p的指向的地址的内容一但被调用一次,马上就变成奇怪的数字了。

你可以试试 //VC和BC里调试,结果都是差不多,VC更加严格。不过可以肯定在MY()后调用*p是错的!
#include <iostream.h>
int *p;
void my()
{
int y;
y=100;
p=&y;
// cout <<"y的地址"<<&y<<endl;
}
void main(void)
{
my();
// cout <<"p的地址"<<p<<endl;
cout <<"*p="<<*p<<endl;
cout <<*p<<endl;
}结果是:
100 //原来的内容
124500//奇怪的数字
gxgxfish0813 2002-01-02
  • 打赏
  • 举报
回复
不会吧。。我可没测试,不一定对,参考一下吧。首先,第一段代码是错的!一个病态的指针,你程序一定死定了。因为Y是局部变量,它一但退出时Y就被释放了。所以P指定什么呢。。天知道了。第二个,p=&y就是让指针P指向变量Y,这样用*P时就相当于直接用Y一样。*p=y啊,就是改变P所指向的变量的值啊。把Y给它。。明白了吧。呵呵。
stanely 2002-01-02
  • 打赏
  • 举报
回复
?
stanely 2002-01-02
  • 打赏
  • 举报
回复
还有
如果把p=&y这句变成*p=y有什么不同?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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