一道找错考题,大家找找看

sede 2004-08-31 09:55:25
请指出该程序的错误。
#include <iostream.h>

int *p;

void Function();
{
int n;
n = 25;
p = &n;
}

void main()
{
Function();
cout<<"value of *p: "<<*p<<endl;
}
...全文
200 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
kolecat 2004-08-31
  • 打赏
  • 举报
回复
厉害,学到东西了,不枉看帖子
insulator 2004-08-31
  • 打赏
  • 举报
回复
To: heksn(佳宁)

你的方法也不对吧,和他原来的错误差不多
返回的指针和引用都不能指向一个局部变量。
yujinchi 2004-08-31
  • 打赏
  • 举报
回复
i agree heksn
simonjp 2004-08-31
  • 打赏
  • 举报
回复
void Function();这里也有问题
FrankZhang123 2004-08-31
  • 打赏
  • 举报
回复
这个函数跟原来的函数实现的功能一样,出的错误也一样。n是局部变量,出了函数作用域,就没有意义了,即使p=&n,则p指向一个没有定义的地址,这个引用仍然是不正确的
snow810211 2004-08-31
  • 打赏
  • 举报
回复
同意~~
  • 打赏
  • 举报
回复
#include <iostream.h>

int *p;

int& Function()
{
int n=25;
p=&n;
return *p;

}

void main()
{

Function();
cout<<"value of *p: "<<*p<<endl;
}
  • 打赏
  • 举报
回复



n是局部变量不能把它的地址赋予全局指针
wgsspank 2004-08-31
  • 打赏
  • 举报
回复
在Function 中的int n 是个local variable,在Function 退出时将释放n,p虽然得到了n的指针,但是Function 返回时&n 将是无效的,有时可能输出正确,但是还是不要返回一个local variable 的指针为好!
  • 打赏
  • 举报
回复
分都不给,过分
sunshine_81 2004-08-31
  • 打赏
  • 举报
回复
1、
#include <iostream.h>

int *p;

void Function()
{
int n;
n = 25;
*p = n;//改一下这应该可以
}

void main()
{
Function();
cout<<"value of *p: "<<*p<<endl;
}

2、
#include <iostream.h>

int *p;

int Function()
{
int n;
n = 25;
return n;
}

void main()
{
*p=Function();
cout<<"value of *p: "<<*p<<endl;
}

没编译过,不知能否正常运行?
jk01dingxian 2004-08-31
  • 打赏
  • 举报
回复
void Function();
{
int n;
n = 25;
p = &n;
}
括号后不应该有;,这是一个错误,还有不应该不一个局部变量的地址付给一个全局指针变量,局部变量在它生命周期结束就消亡了,此时全局指针仍然指向原来的地址,但真正的值可能是原来局部变量的值,可能是未知的,谁也无法确定,(当你的程序很大的时候绝对是未知的),这就是一个错误.
lrqhaier 2004-08-31
  • 打赏
  • 举报
回复
厉害,学到东西了,不枉看帖子~~~
comebaby 2004-08-31
  • 打赏
  • 举报
回复
刚才试了一下,发现结果确实是25。要不是局部变量还没有被释放吧??
comebaby 2004-08-31
  • 打赏
  • 举报
回复
n是局部变量,p指向&n,在函数执行完,&n应该是无法预料的吧
zchuer 2004-08-31
  • 打赏
  • 举报
回复
Function()函数定义后面多了一个分号,别的没什么错误
把局部变量的地址赋给一个全局指针,不是不可以,但是不鼓励这样做。在这个程序中这么写没有问题,如果实比较复杂的程序,可能最终得到的*p值和期待值不一样。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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