对于下面给出的代码,为什么输出“This is the string”而不是字符串中第一个字符的地址'T'?
int main()
{
char myString[] = "This is a string";
char *ptr = &myString[0];
cout << ptr << endl;
return 0;
}
上面点击输出。
答案 0 :(得分:1)
为什么输出&#34;这是字符串&#34;而不是字符串中第一个字符的地址,
'T'
?
有一个operato<<
重载,其LHS为std::ostream
,RHS为char const*
。此函数打印字符串。
如果您要打印'T'
的地址,可以将指针投射到void*
。
cout << static_cast<void*>(ptr) << endl;
答案 1 :(得分:0)
char *ptr = &myString[0];
表示将ptr
指向myString
的第一个字符。然后,cout
的重载为<<
,需要char *
,并会打印它指向的内容和前面的元素,直到它达到'\0'
如果要打印数组的地址,则需要先将指针转换为void*
之类的其他内容,然后再打印:
cout << reinterpret_cast<void*>(ptr) << endl;