【问题标题】:Why can I modify at which char const char * points?为什么我可以修改哪个 char const char * 点?
【发布时间】:2017-03-25 21:07:08
【问题描述】:

我正在学习 const 和使用示例的指针。从this thread 我读到: const char* the_string :我可以更改 the_string 指向的字符,但我不能修改它指向的字符。

 int main()
{
    const char* a = "test";
    char* b = "other";
    a = b;
    cout << a << endl; //prints "other"
}

为什么我可以修改a点的哪个字符?

【问题讨论】:

  • a 是一个指针。它用于引用一些数据(在本例中为char 数组)。指针与它们指向的数据是分开的实体,因此它们经常成为混淆我们是在谈论指针还是数据的来源。在这种情况下,const 指的是 数据。它也不必引用指针。
  • 为什么要重新提出这个问题?这与链接的问题完全相同,并且链接的问题有很好的答案。
  • 我做到了。 @Barry 你可能是这个网站上最聪明的人之一,如果不是 the 最聪明的人,那么对你来说显而易见的事情可能对其他人来说不是。我认为复制品对于金锤来说不够“明显”。
  • @Bathsheba Ha。我不知道该如何回应。我绝对不是这个网站上最聪明的人之一。

标签: c++ pointers char constants


【解决方案1】:

您可以将a 设置为指向其他内容,因为a 本身不是 const:只有它指向的数据是const

不允许设置b = a,因为你会抛弃const

如果你想阻止a = b然后写

const char* const a = "test";

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2019-02-01
    • 2019-07-26
    • 2020-06-05
    • 1970-01-01
    • 2011-11-25
    相关资源
    最近更新 更多