标题说明了一切。如何更改常数的值? 这与更改常量数组的索引X处的元素的值一样吗?
#include<iostream>
int main(){
const char* y = "original";
auto *p = &y;
*p = "modified";
std::cout<<y<<"\n";
//outputs modified
system("pause");
return 0;
}
答案 0 :(得分:5)
请注意,y
是非常量指针(指向const
)。您不是在修改const
部分,即const char
指向的y
,而是y
本身;这是有效的。 BTW通过指针y
修改p
与
const char* y = "original";
y = "modified"; // this is well-formed
另一方面,
*y = 'm'; // this is ill-formed
如果您进行y
const
,则可能会得到预期的诊断结果。
const char* const y = "original";
y = "modified"; // ill-formed
*y = 'm'; // ill-formed