Zugriff auf das 2D-Array (Ganzzahl- und Zeichenarray)

Nov 01 2020

Bitte beachten Sie den folgenden Code:

char arr[3][10]={"white","red","blue"};
cout<<arr[2];  //output 1
int brr[3][3]={1,2,3,4,5,6,7,8,9};
cout<<brr[2];  //output 2

cout<<*brr[2];

Ausgabe 1: Weiß, bei Dereferenzierung wird w als Ausgabe ausgegeben

Ausgabe 2: hexadezimale Adresse (0x28 .....)

Ausgabe 3: Letzte Zeile erstes Element 7

Ich bin verwirrt, warum es Unterschiede in der Ausgabe von Ganzzahlen und Zeichen gibt.

Antworten

2 TedLyngmo Nov 01 2020 at 07:22

Wenn Sie einen Zeiger angeben, verwendet dieser die std::ostream& operator<<( const void* value );Überladung und gibt die Adresse aus, auf die er zeigt value.

Der Unterschied besteht darin, dass dies std::ostream& operator<<(std::ostream& os, const char* s)ein Sonderfall ist und sdas chars dereferenziert und ausgegeben wird, bis a \0angetroffen wird. Solange keine gefunden \0wird, tritt sie svor.