当前位置:C++技术网 > 资讯 > 编译器为什么不把c++指针的初始值默认为null ?

编译器为什么不把c++指针的初始值默认为null ?

更新时间:2015-06-27 17:38:11浏览次数:1+次

编译器为什么不把c++指针的初始值默认为null ?


那么编译器为什么在程序员没有主动初始化的时候,去初始化这个指针为null来提高安全性?


1、和C语言兼容
2、全局变量,申明的时候即使不初始化,系统会给你个默认的初始化值的. 
具体的如下: 

boolean false  
char null  
byte 0  
short 0  
int 0  
long 0  
float 0.0  
double 0.0  
Object null


3、大多数情况下指针变量在栈上分配内存,编译器在分配变量的空间时只是简单移动栈的指针,这样在栈上声明多个变量就来得很快速,进行一次栈指针的移动就可以了,而再读写内存意味着效率将会损失,并且初始化的内容很快就会被改变
4、设计原则:不为不用的东西付出代价。


我的思考:
    个人感觉这几个答案都没有说到重点里面去。
    第三个观点是从效率的角度来描述的,我认为程序的初始化花费的时间比运行时间短多了,占用CPU时间的比例很少。不足以影响整个性能。而且大部分指针都会去初始化,只有忘记了的,才会变成野指针,那么要初始化的指针就更加少了。我觉得还是要没有说到重点里面去。
    第四个观点是从设计的角度来说的,认为程序员有责任去初始化一个指针,如果忘记了设置,那么只能说是个人的问题。这个不能成为原因。C语言里面,我们为什么要定义null 为0。简单来说我们判断指针的值为0时,间接默认0就是错误指针、是空指针。那么编译器为什么在程序员没有主动初始化的时候,去初始化这个指针为null来提高安全性?

    如果有知道真正答案的,不吝赐教给我们。谢谢!