Ser*_*tch 3 c c++ pointers const
我仍然困惑在哪里放置const指向多个间接的指针.有人可以澄清吗?
例如,我现在需要一个指向const指针的指针,这意味着int **ppTargets我可以为其赋值int *pTargets变量,例如:
int foo(int **ppTargets) {
int *pTargets = /* calculate here */;
*ppTargets = pTargets;
return 37; // just e.g.
}
Run Code Online (Sandbox Code Playgroud)
上面的代码缺乏const.所以在foo我想pTargets指向常量内存并且在初始化之后是不可分配的(因此无法写入例如pTargets++),那就是int const *const pTargets = /* assigned once */.接下来我想声明ppTargets它ppTargets本身可以被分配,但是*ppTargets只能被读取.
换句话说,在我想要的来电代码中:
int const* pTargets;
foo(&pTargets);
Run Code Online (Sandbox Code Playgroud)
我试图声明foo如下,但得到一个错误you cannot assign to a variable that is const:
int foo(int *const *const ppTargets)
Run Code Online (Sandbox Code Playgroud)
我总是从左边最右边的变量名读取C/C++定义.
所以:
const char *p;
p是指向一个char即const
所以p可以修改,但*p不能.
const char * * const p = &a;
p是一个const指针的指针到一个char即const.
所以p不能修改(因此我初始化它); *p能够; 但**p不能.
[编辑 - 为完整性添加了数组]
const char * * const p[4] = { &a, &b, &c, &d };
p是一个4元素的const指针数组...