对于下面给出的代码,为什么输出“This is the string”,而不是字符串中第一个字符的地址'T'?C++中的简单字符串指针
int main()
{
char myString[] = "This is a string";
char *ptr = &myString[0];
cout << ptr << endl;
return 0;
}
输出将被上述点击。
对于下面给出的代码,为什么输出“This is the string”,而不是字符串中第一个字符的地址'T'?C++中的简单字符串指针
int main()
{
char myString[] = "This is a string";
char *ptr = &myString[0];
cout << ptr << endl;
return 0;
}
输出将被上述点击。
char *ptr = &myString[0];
手段使ptr
点的myString
第一个字符。然后cout
有<<
过载,需要一个char *
,将打印它所指向并和前面元素,直到它到达一个'\0'
如果你要打印的数组的地址,那么你需要将指针转换别的像void*
第一,然后打印:
cout << reinterpret_cast<void*>(ptr) << endl;
为什么输出“这是字符串”,而不是第一个字符的字符串,
'T'
的地址?
有一个过载operato<<
其LHS是std::ostream
和RHS是char const*
。这个函数打印字符串。
如果要打印'T'
的地址,可以将指针投射到void*
。
cout << static_cast<void*>(ptr) << endl;
由于'&myString [0]'与'myString'完全相同,所以定义如下。 –
用于'char *'的'operator <<'输出一个字符串。 – crashmstr