c++ - char* 在 C++ 中到底是什么意思?
问题描述
我的理解是它是为了包含一个 char 变量的内存地址,但现在我看到它可以用来创建字符串?例如,
char* ptr = "string";
当 ptr 用于保存内存地址时,如何为它分配一个字符串?我认为需要取消引用运算符来更改指向的值?
解决方案
"string"
是一个const char[7]
类型文字。C++ 允许您使用兔子耳朵来简化语言。为您添加了 0 终止符,这就是为什么有 7 个元素,而不是 6 个。
在各种情况下,数组类型衰减为指针类型,指针设置为数组的第一个元素。赋值就是其中之一。这就是这里发生的事情。
正式地,从 C++11 开始,您的 C++ 编译器不应编译该语句。它应该是
const char* ptr = "string";
推荐阅读
- html - CSS3 预加载器代码不显示背景颜色
- swift - 在 Swift 中观察超类的实例变量
- java - 如何修复“加载应用程序上下文失败,至少必须存在 1 个 JPA 元模型”
- c - 如何从标准输入打印行?
- python - 无法使用行和列将标签和按钮移动到网格上的正确位置
- python - 为什么当 websocket 连接处于活动状态时,python 循环的增量时间会增加?
- javascript - Acrobat X 中的 JavaScript:打印页面范围
- html - 为什么我的 justify-content: 不能开始为 Flexbox 工作?
- python - 美丽的汤发现没有返回
- javascript - 在嵌入我网站的 YouTube 视频之前添加自定义视频广告