指向文字的指针?
Pointer to a literal?
在阅读C++入门时,我遇到了这样一句话:const char *cp = "Hello World";
据我了解,"Hello World"
是一个字符串文字,它是一个常量字符数组。由于数组衰减到指向数组中第一个元素的指针。这是否意味着cp
指向H
哪个是字面意思?不是不可能有一个指向文字的指针,因为指针必须指向内存中对象的地址吗?
未指定文本类型的存储类型:布尔值、整数、浮点数、字符和 nullptr,因此它们不需要在内存中具有存储位置。
指定文本字符串类型的存储类型:"...字符串文本具有静态存储持续时间,因此在程序的生命周期内存中存在...">来源: https://en.cppreference.com/w/cpp/language/string_literal
因此,文本字符串的地址可以获取并存储在const char *
中。
正如@MichaelKenzel所建议的:
从 C++17 草案标准 (n4659( https://timsong-cpp.github.io/cppwp/n4659/lex.string#16
计算字符串文本会生成一个字符串文本对象 静态存储持续时间,从给定字符初始化为 上面指定。是否所有字符串文本都是不同的(即, 存储在非重叠对象中(以及是否连续 字符串文本的计算产生相同或不同的对象 未指定。[ 注意:尝试修改字符串的效果 文字是未定义的。 — 尾注 ]
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 为什么带有指针子对象的文字类类型的 constexpr 表达式不能是非类型模板参数
- 指向文字的指针?
- 确保字符指针始终指向相同的字符串文字
- C++ 常量指向文字的指针有效吗?
- 是否可以将指针传递给文字?
- 为什么我的拆卸C 代码使用指令指针和偏移来获取字符串文字
- 内存泄漏,指向文字的指针
- C 指针可以指向字符串文字的静态成员数组
- 当返回一系列字符或指针到char文字时的区别
- 为什么允许将字符串文字分配给 C++ 中 char * 类型的指针
- 字符串文字绑定到一个非常量字符指针
- 为什么 clang 将字符串文字作为指针而不是数组
- 指针和文字常量
- c++用户定义的文字操作符可以传递空指针吗?