我的理解是它应该包含一个 char 变量的内存地址,但现在我看到它可以用来创建字符串?例如,
char* ptr = "string";
当要保存内存地址时,如何为 ptr 分配字符串?我认为需要取消引用运算符来更改所指向的值?
最佳答案
"string"
是 const char[7]
键入文字。 C++ 允许您使用兔子耳朵来简化语言。为您添加了 0 终止符,这就是为什么有 7 个元素,而不是 6 个。
在各种情况下,数组类型衰减为指针类型,指针设置为数组的第一个元素。赋值就是这些实例之一。这就是这里正在发生的事情。
从形式上讲,从 C++11 开始,您的 C++ 编译器不应编译该语句。它应该是
const char* ptr = "string";
关于c++ - C++ 中 char* 到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60996394/