const和constexpr指针之间的区别

时间:2015-02-09 22:16:34

标签: c++

以下两个指针定义

之间有什么区别
int i = 0;
const int *p = &i;
constexpr int *cp = &i;

1 个答案:

答案 0 :(得分:3)

const int *p = &i;表示:

  • p是非const的:可以将其重新分配以指向不同的int
  • i无法通过p修改而不使用演员

constexpr int *cp = &i;表示:

  • cpconst:无法重新分配
  • i 可以通过p
  • 进行修改

在这两种情况下,当且仅当p具有静态存储持续时间时,i才是地址常量。但是,如果应用于不是地址常量的内容,则添加constexpr将导致编译错误。

换句话说:constexpr int *cp = &i;int *const cp = &i;非常相似;唯一的区别是,如果cp不是地址常量,第一个将无法编译。