2015-10-13 76 views
0

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

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

enter image description here

输出将被上述点击。

+0

由于'&myString [0]'与'myString'完全相同,所以定义如下。 –

+2

用于'char *'的'operator <<'输出一个字符串。 – crashmstr

回答

0
char *ptr = &myString[0]; 

手段使ptr点的myString第一个字符。然后cout<<过载,需要一个char *,将打印它所指向并和前面元素,直到它到达一个'\0'

如果你要打印的数组的地址,那么你需要将指针转换别的像void*第一,然后打印:

cout << reinterpret_cast<void*>(ptr) << endl; 
1

为什么输出“这是字符串”,而不是第一个字符的字符串,'T'的地址?

有一个过载operato<<其LHS是std::ostream和RHS是char const*。这个函数打印字符串。

如果要打印'T'的地址,可以将指针投射到void*

cout << static_cast<void*>(ptr) << endl;