加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C指向const指针的指针

发布时间:2020-12-16 10:15:06 所属栏目:百科 来源:网络整理
导读:我仍然困惑在哪里将const放在具有多个间接的指针中.有人可以澄清吗? 例如.现在我需要一个指向const指针的指针,意思是这样一个变量int ** ppTargets我可以为它分配int * pTargets变量,如: int foo(int **ppTargets) { int *pTargets = /* calculate here */
我仍然困惑在哪里将const放在具有多个间接的指针中.有人可以澄清吗?

例如.现在我需要一个指向const指针的指针,意思是这样一个变量int ** ppTargets我可以为它分配int * pTargets变量,如:

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

上面的代码缺少const.所以在foo中我希望pTargets指向常量内存并且在初始化后无法分配(因此无法写入例如pTargets),这将是int const * const pTargets = / *分配一次* /.接下来我想声明可以分配ppTargets本身的ppTargets,但是* ppTargets只能被读取.

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

int const* pTargets;
foo(&pTargets);

我尝试按如下方式声明foo,但是得到一个错误,你无法分配给const变量:

int foo(int *const *const ppTargets)

解决方法

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

所以:

> const char * p;

p是指向const的char的指针

所以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指针数组…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读