9

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

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   

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

提前致谢。

4

1 回答 1

21

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
于 2017-12-17T10:54:11.510 回答