我在任何函数之外有两个变量(具有固定地址):
constexpr int j = 1;
const int k = 2;
然后我在main
中找到了他们的地址:
int main(){
constexpr int *p1 = &j; // ok
constexpr int *p2 = &k; //error: incompatible pointer types of `int*` and const int*
return 0;
}
我知道constexpr
意味着它可以在编译时确定,也意味着const
。
我认为如果j
是const
,则p1
应为:
constexpr const int *p1 = &j;
constexpr const int *p2 = &k
效果与预期一致。
然后,为什么 constexpr int * p2 =& k 错误,而 constexpr const int * p2 =& k 是否正常?