为什么我可以通过指针更改常量(const char *)的值?

时间:2019-07-29 15:01:10

标签: c++ pointers constants

标题说明了一切。如何更改常数的值? 这与更改常量数组的索引X处的元素的值一样吗?

    #include<iostream>
    int main(){
        const char* y = "original";
        auto *p = &y;
        *p = "modified";
        std::cout<<y<<"\n";
        //outputs modified
        system("pause");
        return 0;
    }

1 个答案:

答案 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