c++ - C++ 中 char* 到底是什么意思?

标签 c++ string pointers char

我的理解是它应该包含一个 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/

相关文章:

c++ - 私有(private)静态变量建立不变量

c# - 如何在 C++ 中将整数转换为字节,以便 Unity 在通过 UDP 传输后可以理解它们

c++ - 为什么我不能锁定派生类的基类互斥体?

这个字符串的 Ruby 正则表达式?

c - 如何在 C 中动态分配结构?

c - 使用结构内的字符串进行选择排序

C++ - 类方法更改成员变量,但不在 main 中

C# - 添加和减去 IP 地址字符串以创建范围

arrays - 如何在 Fortran 中获取未知长度的命令行参数?

c - 不完整的数组类型 int (*p_arr)[ ]?