gpt4 book ai didi

c++ - 为什么这个const char* 实际修改后不能修改呢?

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:11 25 4
gpt4 key购买 nike

举个例子:

int main()
{
const char* what = "Is This";
what = "Interesting";
cout << *what;
what[3] = 'a'; // Sytax Error: expression must be a modifiable lvalue
cout << *what;

return 0;
}

因此,我将 what 声明为 const char*,并且我能够为其重新分配另一个值(内存中的实际数据 - 而不是内存地址本身)。

但是,它告诉我不能更改第 4 个位置的字符!

这是为什么?

最佳答案

在这段代码中,what 是指向 const char 的非常量指针。

您可以更改what,但不能更改*what

如果要声明一个指向const char的const指针,需要写两次const:

const char *const what = "Is This";
// what is const
what = "Interesting"; // Error
// *what is also const
what[4] = 'x'; // Error

如果你想要一个指向非const char的const指针,把它写在不同的地方:

char isthis[] = "Is This";
char interesting[] = "Interesting";
char *const what = isthis;
// what is const
what = interesting; // Error
// *what is not const
what[4] = 'x'; // Ok

关于c++ - 为什么这个const char* 实际修改后不能修改呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54990928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com