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