C++ const双指针

cha*_*lis 3 c++ const const-pointer

我想使一个常量双指针指向一个指向常量double的常量指针.我从头开始制作它(当然我在书上做了一些搜索,然后我用Google搜索)并思考以下三个:

const double* cp; //pointer to a constant double
double *const cp; //constant pointer
const double *const cp; //constant pointer to a constant double
Run Code Online (Sandbox Code Playgroud)

我认为下一步是编写一个常量双指针

double **const cp;// double constant pointer
Run Code Online (Sandbox Code Playgroud)

然后我结合最后两个语句和我写

const double *const cp = arr[0];
double **const cp1 = arr ;
Run Code Online (Sandbox Code Playgroud)

其中arr是动态分配的双维数组.之后我试着验证我做了什么,并写下了以下语句,期望产生所有错误.

**cp1 = 1;    // didn't produce error  
*cp1 = arr[4];    // didn't produce error
cp1 = new double*[5]; //produce error   
Run Code Online (Sandbox Code Playgroud)

所以问题是我无法完成上面描述的内容,一个常量双指针指向一个指向常量double的常量指针.我该怎么做?

提前致谢.

mel*_*ene 6

这里只有一个const

double **const cp1 = arr ;
//       ^^^^^
Run Code Online (Sandbox Code Playgroud)

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

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

const double *const *const cp1 = arr;
//                         ^ cp1 is ...
//                  ^ a const pointer to ...
//           ^ a const pointer to ...
// ^ a const double
Run Code Online (Sandbox Code Playgroud)

  • 我想将这个答案提升到神圣的地位。对于初学者来说,这是关于如何阅读指针的一个很好的解释,我认为它应该出现在像这样的社区周围的更多地方。 (3认同)
  • 非常感谢您,不仅是您的回答,而且是您在代码下方的解释以及您的评论。即使在书中,我也没有找到这样的解释,只有例子。 (2认同)