gpt4 book ai didi

指向 const 指针的 C++ 指针

转载 作者:太空狗 更新时间:2023-10-29 19:47:36 25 4
gpt4 key购买 nike

我仍然对将 const 放在具有多个间接寻址的指针中的何处感到困惑。有人可以澄清一下吗?

例如现在我需要一个指向 const 指针的指针,这意味着我可以将 int *pTargets 变量分配给它的变量 int **ppTargets,例如:

int foo(int **ppTargets) {
int *pTargets = /* calculate here */;
*ppTargets = pTargets;
return 37; // just e.g.
}

上面的代码缺少const。所以在 foo 中,我希望 pTargets 指向常量内存并且在初始化后不可分配(这样就不能写例如 pTargets++),那将是int const *const pTargets =/* 赋值一次 */.接下来我要声明ppTargetsppTargets本身可以被赋值,但是*ppTargets只能被读取。

换句话说,在我想要的caller代码中:

int const* pTargets;
foo(&pTargets);

我尝试按如下方式声明 foo,但出现错误 you cannot assign to a variable that is const:

int foo(int *const *const ppTargets)

最佳答案

我总是从最右边的变量名向左读取 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 };

    pconst 指针的 4 元素数组......

关于指向 const 指针的 C++ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54045915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com