c++ - 在 C++ 中存储字符串时,char* 和 char 有什么区别?

标签 c++ string pointers syntax

我看到了这个例子:

const char* SayHi() { return "Hi"; }

它工作正常,但如果我尝试删除指针,它就不起作用,我想不通 说出为什么。

const char SayHi() { return "Hi"; } \\Pointer removed

如果我像这样给它分配一个字符,它就会工作:

const char SayHi() { return 'H'; } \\Pointer removed and only 1 character

但我不知道究竟是什么让它起作用。为什么一个指针能够容纳多个字符?指针不就是指向另一个变量的变量吗?这意味着什么?

最佳答案

那是因为根据定义,char 是一个单个 字符(就像您的第 3 种情况)。如果你想要一个字符串,你可以使用一个 char 的数组,它会衰减到 const char* (就像你的第一种情况),或者以 C++ 的方式,使用 std::string.

Here您可以阅读更多关于“数组衰减到指针”的内容。

关于c++ - 在 C++ 中存储字符串时,char* 和 char 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25879396/

相关文章:

java - 是否可以将字符串中的文本颜色更改为 Java 中的多种颜色?

python - 通过 Python 中的数组语法寻址字符串的一部分

c++ - 在 C++ 中使用复合文字

c++ - 为什么enable_shared_from_this嵌入一个弱指针而不是直接嵌入引用计数器呢?

c++ - 在 C++ 中拆分字符串

pointers - "cannot take the address of"和 "cannot call pointer method on"

C指针问题

c - 初始化 C 结构数组,其大小在编译时未知

C++删除错误

c++ - 在 NCBI c++ 工具包应用程序中设置版本号