You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:58:22