主要是为了防止不正常的使用,程序跑飞到指针所指的地方,程序进入不正常状态。
如果设置成了空,那么这个指针,也就没有使用了,只是为了防止不正常的地址访问
定义指针之后需要赋初值,不然后续程序使用容易出现问题;
指针默认定义后的值是随机的,而NULL一般是一个地址,但这个地址实际上是不存在的
它这样做有个好处,就是后续再对这个指针进行赋值操作时,如果判断到它等于NULL,说明之前没有操作过,就不再对它操作。但如果没有赋初值,它不一定等于NULL,而是一个随机值,这时操作的时候可能引发意外
这个其实更多的是一种规范,因为一般情况下判断指针是否有效都是与NULL进行对比,如果指针量等于NULL,表示是无效指针。
你其实也可以自定义一个表示无效的量。
我们举个例子说一下变量或指针分配内存的过程。
先说一下普通的变量。
以变量定义时,内存空间是直接分配的,比如int aa或int aa[10],aa这个内存地址是有的,内存地址里应该也有数据(解析出来可能是个很大的int型负数)。aa变量不赋值直接用的话,最多是给个警告,"警告,变量值在赋值以前被使用"。
但是,指针就不一样了。
变量以指针形式定义的时候,比如int *bb,因为它在内存里都还没有分配空间,虽然bb这个指针本身有初始值(当前这个值没有意义,分配完内存,会指到具体的内存位置),但*bb这个内存是无法读取的(不存在,也就是NULL)。你需要给它分配内存,比如这样的一句话bb = new int[10]。然后,bb的值会变成具体的值(bb指针就指到具体的内存空间了),然后*bb也有值了。