首页 > 解决方案 > char* 在 C++ 中到底是什么意思?

问题描述

我的理解是它是为了包含一个 char 变量的内存地址,但现在我看到它可以用来创建字符串?例如,

char* ptr = "string";

当 ptr 用于保存内存地址时,如何为它分配一个字符串?我认为需要取消引用运算符来更改指向的值?

标签: c++stringpointerschar

解决方案


"string"是一个const char[7]类型文字。C++ 允许您使用兔子耳朵来简化语言。为您添加了 0 终止符,这就是为什么有 7 个元素,而不是 6 个。

在各种情况下,数组类型衰减为指针类型,指针设置为数组的第一个元素。赋值就是其中之一。这就是这里发生的事情。

正式地,从 C++11 开始,您的 C++ 编译器不应编译该语句。它应该是

const char* ptr = "string";

推荐阅读