我在这里有点困惑。在语句const char *str="Hello";
中,str
是一个指向字符串"Hello"
的第一个字符'H'
的char
变量的指针,因此str
应该包含'H'
字符的地址。但是,如果我使用cout<<str
,它会打印整个字符串"Hello"
而不是地址。
而且,如果我使用cout<<*str
打印存储在str
指向的地址中的值,它会正确打印字符'H'
。
有人可以解释一下如何以及为什么会发生这种情况吗?这可能是非常基本的,但解释会帮助我更清楚地理解这些概念。
是指向 char 变量的指针
示例中没有 char 变量。str 确实指向 char 对象。
有人可以解释一下如何以及为什么会发生这种情况吗?
因为二元运算符<<
其左操作数是输出操作数,右手操作数是指向 char 的指针,所以指定打印整个字符串。
如果指向的字符不在包含从该字符开始的空终止符字符的数组中,则程序的行为将是未定义的。字符串文本以 null 结尾,因此示例是正确的。