在 C++ 中定义一个字符串,使用 const char *str= "Hello" ;



我在这里有点困惑。在语句const char *str="Hello";中,str是一个指向字符串"Hello"的第一个字符'H'char变量的指针,因此str应该包含'H'字符的地址。但是,如果我使用cout<<str,它会打印整个字符串"Hello"而不是地址。

而且,如果我使用cout<<*str打印存储在str指向的地址中的值,它会正确打印字符'H'

有人可以解释一下如何以及为什么会发生这种情况吗?这可能是非常基本的,但解释会帮助我更清楚地理解这些概念。

str

是指向 char 变量的指针

示例中没有 char 变量。str 确实指向 char 对象。

有人可以解释一下如何以及为什么会发生这种情况吗?

因为二元运算符<<其左操作数是输出操作数,右手操作数是指向 char 的指针,所以指定打印整个字符串。

如果指向的字符不在包含从该字符开始的空终止符字符的数组中,则程序的行为将是未定义的。字符串文本以 null 结尾,因此示例是正确的。

最新更新