int *p = NULL如果不置空值会有什么结果

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:30:50
听说后果严重
最好能举例说明下,好理解
谢谢大家
怎么才是乱使用?

int *p后,p代表的是一段2\4字节内存空间

如果不置空,p可能指向任意的地方

当你对这段空间进行操作时(如 *p = 1),操作的内容就会覆盖原来存储的内容

而碰巧这段内容是操作系统使用的一段空间,那么就有可能导致系统崩溃等现象的发生,这就是它危险的原因。

没有初始化就使用就是乱使用

比如你定义了:
int i=1;
int *p;
...
scanf("%d",p);
p的指向是随即的,假设它恰好指向了i,那么i的值在没程序员的允许下就被改变了,

这只是一个简单的例子,很多情况下,使用未初始化的指针程序会异常终止

int *p; //划一块空间把它叫做p,这块空间里有上次使用时存过的值,若该值正好是某个重要位置的地址,当你再执行*p = 2;时,就出问题了

这里不学null是没有问题的,但是在你使用它前一定要传地址给它,如果运气好指针指向一块空白内存就没事,如果指向系统或者其它程序的关键内存区域后果不言而喻.所以还是养成开始就给NULL的好点.

不乱使用是没有不 良影响的。