C++指针未初始化

我一直不明白书上说指针未被初始化所引起的灾难性后果到底是什么意思....内存被占用,系统崩溃这个具体是什么样子?那为什么下面我自己写的这个编译通过了?指针没赋初值啊#include<iostream.h>
void main()
{
int a,*pa;
pa++;
}

是没有赋初值
但是编译能通过。

现在切入正题

//////指针未被初始化所引起的灾难性后果
////的程序如下
#include<iostream.h>
void main()
{
int *p[300];//////故意定义一个指针数组,并不赋初值
for(int i=0;i<300;i++)
{
cout<<(*p)<<endl;
}//////////////执行完该for语句后,你会发现输出一大堆怪怪的东西
////////////但是上面并没有给指针们赋值啊
}
/***结论:
****原来不给指针赋值,
****他们也有随机的值,并不是=0(其实任何数据都一样)
****在这个时候,如果指针指向系统中关键的部分,
****并且你修改了它(比如 *p=100;给它赋值)
****系统就坏了。引起了灾难性后果。
****但你如果不修改它还不会有事。
***/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-05
比若说它可以随机指向操作系统的某个变量,如果你在操作的时候对指针指向的元素进行了修改,那么你的操作系统就崩溃了。
第2个回答  2013-04-05
指针未初始化可以通过编译,但运行时会出现不可预料的问题
第3个回答  2013-04-04
你这个是指针局部变量增加了,指针指向的地址并没有被引用
第4个回答  2013-04-04
你指定一个指针之后它就是指向一个地址的,不是它没有内容,只不过这时候指针指向的是内存原来存储信息代表的地址,不是你想要的地址。这个地址可能代表你程序类的某个地方,或者程序外的某个地方,所以当指针跳转的时候就会发生不可预料的后果。不知道这么说明白了没
相似回答