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
以及什么时候我不必使用。@ademsonmezconst float**
是一个指针在常量float上的指针,所以你需要在常量上新建一个指针float@Tykerconst float*const*histRange=new float怎么样*(nullptr)
它也是指向常量的指针指向常量浮点
但您可以在不使用常量的情况下初始化它