C++中的指针初始化

C++中定义一个指针的时候,例如
int *p。
可以认为定义了两个内容,1:指针,2:指针的指向。需要对指针本身和指针的指向都进行初始化,既要初始化内存地址,也要定义内存中的内容。如果不进行指针的初始化,则内存地址随机分配。格根据编译器的不同,会出现警告或者报错不同等级的问题,在编译中也可能出现难以察觉的bug。
指针的初始化时等号左右两端都必须是内存地址。例如

int a; int *p; p = &a;

同时,也可以在定义指针的时候就直接对指针初始化。
int a; int *p = &a

这里可以这么理解:
int a; int *(p=&a);

这样的理解有些怪异,因此我一般倾向于这样写:
int* p = &a

但是肯定会面临一个问题,上面的a除了用作给指针p做初始化,没有任何作用了,每次都要开辟一个空间用来给指针初始化,这明显不合理。所以指针初始化还有其他的方式:初始化为空指针和初始化为动态内存
int* p = NULL; int* p = new double;

【C++中的指针初始化】至于动态内存的用法则是另一篇的内容了

    推荐阅读