如何使用new运算符初始化const float**等多级指针?
用
new初始化不同层级const指针的方法 咱们先再明确下三个指针的类型,然后逐个看怎么用new完成初始化:
1. 初始化const float** b
b是指向const float*类型指针的指针,也就是说它指向的是一个“可以修改的、指向const float的指针”。
你可以用两种方式初始化:
- 分步初始化:
// 先创建一个const float对象,拿到它的指针 const float* inner_b = new const float(3.14f); // 再分配一个存放const float*指针的空间,让b指向这个空间 b = new const float*(inner_b);
- 嵌套
new一步完成:
b = new const float*(new const float(3.14f));
注意:后续释放内存时,要先释放
*b指向的const float对象,再释放b指向的指针空间:delete *b; delete b;
2. 初始化const float* const* c
c是指向const float* const类型指针的指针——这里的内层指针是个const指针,意味着它指向的地址一旦确定就不能修改,必须在初始化时就赋值。
初始化步骤如下:
// 先准备一个const float对象(也可以用new动态分配) const float fixed_val = 3.14f; // 创建一个const float* const类型的指针,必须在定义时就指定它的指向 const float* const inner_c = &fixed_val; // 让c指向这个const指针的地址 c = new const float* const(inner_c);
如果用动态分配的对象:
const float* const inner_c = new const float(3.14f); c = new const float* const(inner_c);
释放内存时同样要注意顺序:
delete *c; delete c;
3. 初始化float* const* d
d是指向float* const类型指针的指针,内层指针是指向float的const指针,同样必须在初始化时确定指向。
初始化方式类似:
- 分步初始化:
float val_d = 3.14f; // 创建指向float的const指针,初始化时指向val_d float* const inner_d = &val_d; // 让d指向这个const指针的地址 d = new float* const(inner_d);
- 嵌套
new一步完成:
d = new float* const(new float(3.14f));
释放内存:如果是动态分配的float对象,记得
delete *d; delete d;
内容的提问来源于stack exchange,提问作者adem sonmez
相关产品推荐
相关产品推荐

