C ++中的简单字符串指针

时间:2015-10-13 18:41:16

标签: c++ pointers

对于下面给出的代码,为什么输出“This is the string”而不是字符串中第一个字符的地址'T'?

int main()
{
    char myString[] = "This is a string";
    char *ptr = &myString[0];
    cout << ptr << endl;
    return 0;
}

enter image description here

上面点击输出。

2 个答案:

答案 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;