const用于修饰指针类型时,可以用于修饰指针本身,也可以用来修饰指针指向的对象:
void constT()
{
int a = 1;
const int *cpa = &a;
*cpa = 2; //编译报错:error: assignment of read-only location '* cpa'
cpa = nullptr;
int * const pca = &a;
*pca = 2;
pca = nullptr; //编译报错: error: assignment of read-only variable 'pca'
}
int main(void)
{
constT();
return 0;
}
cpa定义为一个指向常量整数的指针,所以*cpa = 2;会编译错误
pca定义为一个指向整数的常量指针,所以pca = nullptr;会编译错误
constexpr用于定义指针时,只能表示这是一个常量指针,并且由于是编译器的常量,所以constexpr指针必须是指向静态变量或全局变量,因为局部变量是运行时分配的,所以无法做到编译器常量:
vo