Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ constexpr指针可以指向哪些类型的对象?_C++_Pointers_Constant Expression - Fatal编程技术网

C++ constexpr指针可以指向哪些类型的对象?

C++ constexpr指针可以指向哪些类型的对象?,c++,pointers,constant-expression,C++,Pointers,Constant Expression,cppreference.com说: 但我试图使constexpr指针保持相同基类型的const对象的地址,但编译器给了我一个错误: const int a = 1; int main(){ constexpr int *b = &a; return 0; } 那么,一个constexpr指针可以指向什么类型呢?您的示例无法编译,因为“a”是一个“const int”,需要一个“constexpr const int”指针指向它 这里的问题不在于constexpr。如果你说 int

cppreference.com说:

但我试图使
constexpr
指针保持相同基类型的
const
对象的地址,但编译器给了我一个错误:

const int a = 1;
int main(){
constexpr int *b = &a;
return 0;
}

那么,一个
constexpr
指针可以指向什么类型呢?

您的示例无法编译,因为“a”是一个“const int”,需要一个“constexpr const int”指针指向它

这里的问题不在于constexpr。如果你说

int *b = &a;
你会得到同样的错误。i、 e.“从常量int*到int*的转换无效”

我们可以通过将其设置为指向常量int的指针来解决这个问题

int const *b = &a;
现在我们可以添加constexpr,是的,constexpr确实意味着const

constexpr int const *b = &a;
其中b实际上是常数。这与以下内容完全相同

constexpr int const * const b = &a;
                    //^^^^^
// this const is made redundant by the constexpr.