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++中的指针初始化】至于动态内存的用法则是另一篇的内容了
推荐阅读
- 个人日记|K8s中Pod生命周期和重启策略
- 学习分享|【C语言函数基础】
- C++|C++浇水装置问题
- 数据结构|C++技巧(用class类实现链表)
- C++|从零开始学C++之基本知识
- 步履拾级杂记|VS2019的各种使用问题及解决方法
- leetcode题解|leetcode#106. 从中序与后序遍历序列构造二叉树
- 动态规划|暴力递归经典问题
- 麦克算法|4指针与队列
- 遇见蓝桥遇见你|小唐开始刷蓝桥(一)2020年第十一届C/C++ B组第二场蓝桥杯省赛真题