请看下这段代码有问题吗?谢谢

来源:百度知道 编辑:UC知道 时间:2024/09/23 07:22:44
请看下这段代码有问题吗?谢谢
#include <iostream.h>
int *pPointer;
void SomeFunction()
{
int nNumber;
nNumber = 25;
//让指针指向nNumber:
pPointer = &nNumber;
}
void main()
{
SomeFunction(); //为pPointer赋值
cout<<"Value of *pPointer: "<<*pPointer<<endl;
}
我的编译器执行下来结果是正确的,但书上说这段代码是错的!
求救!!!

你写的这段代码是危险的代码,因为SomeFuction()调用结束后其所有的资源都会被系统回收,即nNumber被释放了,可能会被其他程序使用从而改变该块内存的内容,但是这种改动你是无法预知的,而你这段程序中由于pPointer是全局变量,在SomeFunction调用结束后仍然指向nNumber这块内存区域,而此时这块区域的内容还未被改动过,因此看起来你的程序运行结果是正确的,但是存在着巨大的隐患

没发现问题,不过可以改进两点:
1.#include <iostream.h> -》#include <iostream>
新的标准不带.h
2.int *pPointer;-》int *pPointer=NULL;
指针定义时最好对它初始化