c++ - 为什么我们可以让 char 类型的指针指向 const*

标签 c++ c constants

有一行代码是这样的: char* arr="Hello" 。我听说字符串 Hello 位于某个地方,用于存放常量内容,例如 const 变量的值(是吗?)。我的困惑是,如果这个假设成立,为什么我们可以让 char* 类型的指针指向 const ,让人们有机会更改 const "Hello"字符串。我的意思是,对于像 C 这样具有类型检查的语言允许这种情况发生,这不是不合理吗?

最佳答案

看,这里的“Hello”是一个字符串文字,但按照标准它不是const

大多数编译器(包括 gcc)将字符串文字放入只读内存中。标准仅要求不要修改字符串文字。

引用 C11 标准,第 §6.4.5 章,字符串文字

If the program attempts to modify such an array, the behavior is undefined.

关于c++ - 为什么我们可以让 char 类型的指针指向 const*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30572201/

相关文章:

c - 信号函数返回类型的真正用途是什么

c - 在嵌入式系统上使用 gsm 模块实现 WebSocket 客户端

java - Ruby 中的常量和 Java 的 Final 关键字

c++ - 非常量左值引用的示例

ruby - 通过继承的 Rspec 常量

c++ - 加权有向图

c++ - 条件变量 C++ Windows

c++ - 您如何将所有链接依赖项打包到一个 Linux 静态库中?

c - 来自 copy_to_user 的“错误地址”错误

c++ - C++ 17:在.cpp文件中定义静态constexpr成员函数