以下两个指针定义
之间有什么区别int i = 0;
const int *p = &i;
constexpr int *cp = &i;
答案 0 :(得分:3)
const int *p = &i;
表示:
p
是非const的:可以将其重新分配以指向不同的int i
无法通过p
修改而不使用演员 constexpr int *cp = &i;
表示:
cp
为const
:无法重新分配i
可以通过p
在这两种情况下,当且仅当p
具有静态存储持续时间时,i
才是地址常量。但是,如果应用于不是地址常量的内容,则添加constexpr
将导致编译错误。
换句话说:constexpr int *cp = &i;
和int *const cp = &i;
非常相似;唯一的区别是,如果cp
不是地址常量,第一个将无法编译。