C++指向const指针的指针

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 */.接下来我想声明ppTargetsppTargets本身可以被分配,但是*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)

Joh*_*ger 5

我总是从左边最右边的变量名读取C/C++定义.

所以:

  • const char *p;

    p是指向一个charconst

    所以p可以修改,但*p不能.

  • const char * * const p = &a;

    p是一个const指针的指针到一个charconst.

    所以p不能修改(因此我初始化它); *p能够; 但**p不能.

[编辑 - 为完整性添加了数组]

  • const char * * const p[4] = { &a, &b, &c, &d };

    p是一个4元素的const指针数组...