【问题标题】:const char* allows to modify the string?const char* 允许修改字符串吗?
【发布时间】:2022-08-12 23:12:08
【问题描述】:

我知道使用 const char* 是指向常量字符的可修改指针。因此,我只能修改指针,而不能修改字符。因此,我不明白为什么允许我这样做:

const char* str{\"Hello World\"};

str = \"I change the pointer and in turns it changes the string, but not really.\";

这是如何运作的?内存中是否有存储所有字符的地方,我可以随意指向它们?此外,str 的地址在整个过程中不会改变。由于唯一可以改变的是地址,我真的不明白这是怎么回事。

也许问题的一部分是我试图理解这一点,就好像字符串是一个整数一样。如果我做:

int number{3};
const int* p_number{&number};

*p_number = 4;

这是无效的,因此我希望 str 不能被修改。换句话说,我在哪里指向,以便“Hello World”变成“我改变了指针,这改变了字符串”?

    标签: c++


    【解决方案1】:

    您不会修改原始字符串。您正在将指针重新分配给新字符串。字符串是常量,而不是指向它的指针。

    要创建一个 const 指针,您可以 const char* const str = "...";

    【讨论】:

      【解决方案2】:

      没有替换任何字符串,您只是重新分配了str 一个存储在堆栈内存中的新字符串。

      【讨论】:

        猜你喜欢
        • 2013-10-22
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多