2015-10-13 96 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;