C++ 使用新运算符初始化指向常量浮点等的指针

C++ 使用新运算符初始化指向常量浮点等的指针,c++,pointers,C++,Pointers,考虑下列声明: const float** b; const float* const* c; float* const* d; 首先,我要确保: b是指向指针的指针指向常量浮点 c是指向常量指针的指针 d是指向常量指针的指针,指向浮点 现在我的问题是,如何使用新的运算符初始化每个指针 const float** b = new const float*(); const float* const* c = new const float*(nullptr); float* const*

考虑下列声明:

const float** b;
const float* const* c;
float* const* d;
首先,我要确保:

  • b
    是指向
    指针的
    指针
    指向
    常量浮点

  • c
    是指向
    常量指针的
    指针

  • d
    是指向
    常量指针的
    指针
    ,指向
    浮点

现在我的问题是,如何使用新的
运算符初始化每个指针

const float** b = new const float*();
const float* const* c = new const float*(nullptr);
float* const* d = new float*(nullptr);

如果它们指向常量,则使用较少一个间接寻址和设置值的类型

您是否真的要创建一个新的浮点、创建一个浮点数组、创建一个浮点数组或指向上述任何一个?只需一个新的浮点,就不会使事情变得复杂。哇。这是把一把上膛的手枪放在一个孩子手里@RichardHodges他要求itThanks给出答案,但我注意到,在某些情况下,当我省略右侧的
const
关键字时,编译器没有给出错误。例如:
const float*const*b=new const float*
const float*const*b=new float*
const float*const*histRange=new float*((float*)(new float*)(new float(45))
它们都能工作。(至少编译时没有错误)。但这会产生错误:
const float**b=new float*
我真的不明白什么时候我必须使用
const
以及什么时候我不必使用。@ademsonmez
const float**
是一个指针在常量float上的指针,所以你需要在常量上新建一个指针float@Tyker
const float*const*histRange=new float怎么样*(nullptr)
它也是指向常量的指针指向常量浮点
但您可以在不使用
常量的情况下初始化它