C++ const 双指针

C++ const double pointer

我想让一个常量双指针指向一个常量指针指向一个常量双精度。我开始从头开始制作它(当然我在书上做了一些搜索,然后用谷歌搜索)并思考以下三个制作的东西:

const double* cp; //pointer to a constant double
double *const cp; //constant pointer
const double *const cp; //constant pointer to a constant double

我以为下一步是写常量双指针

double **const cp;// double constant pointer

然后我将最后两个语句结合起来写成

const double *const cp = arr[0];
double **const cp1 = arr ;

其中 arr 是动态分配的双维数组。 之后我试图验证我做了什么,我写了下面的语句,期望所有这些语句都会产生错误。

**cp1 = 1;    // didn't produce error  
*cp1 = arr[4];    // didn't produce error
cp1 = new double*[5]; //produce error   

所以问题是我无法实现我上面描述的,一个常量双指针指向一个常量指针指向一个常量双精度。我怎样才能做到?

提前致谢。

中只有一个const
double **const cp1 = arr ;
//       ^^^^^

所以我不确定您为什么期望其他两个作业产生错误。

如果你想让它在所有级别上都const,你需要

const double *const *const cp1 = arr;
//                         ^ cp1 is ...
//                  ^ a const pointer to ...
//           ^ a const pointer to ...
// ^ a const double