微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“指向 const int 的指针”是否与“ const int* ”相同

如何解决“指向 const int 的指针”是否与“ const int* ”相同

我正在阅读有关指针的内容,但对某一部分感到困惑。给出的代码如下:

int i=0;
const int ci = i;
auto *p = &ci;`

现在的问题是 p 的类型是什么?我认为 p 将是一个 指向 const int 的指针。这样对吗?如果是,这是否等于 const int*?指向 const int 的指针是否与 const int* 相同?

解决方法

在 C++ 中,const 关键字通常应用于类型左侧的部分。

所以 int const* 是一个指向常量整数的指针,而 int*const 是一个指向非常量整数的常量指针。

示例中 p 的类型是 int const*

const 放在右边的习惯被称为东常量。

现在有一个“const适用于左边”的例外;当左侧什么都没有时,它会应用于右侧。这种令人困惑的异常意味着 const int*int const*。但是 using X=int*; const X 变成了 int*const

const 放在左边的习惯,以及由此产生的混乱,被称为 west const。

简而言之,答案是肯定的,除非您添加别名。

,

我认为 p 将是一个指向 const int 的指针

是的,这就是 p

如果是,这将等于 const int* 吗?

是的:const int* p; 正是您将 p 定义为指向 const int 的指针的方式。

以防万一,您可以定义/初始化一个指向(非常量)constint 指针,如下所示:

int* const cp = &i;

而且,对于指向 constconst int 指针,您需要两次 const 限定符:

const int* const cp = &ci;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。