-1

私は簡単なプログラムを持っています:

char buffer[128];                      // creates an array of 128 elements
memset(&buffer, 65, sizeof(buffer));   // fills buffer with 'A' (ascii 65) letter
cout << buffer << endl;                // prints whole buffer - 128 times 'A' letter
cout << &buffer << endl;               // prints adress of a buffer (first element of it)
cout << buffer[0] << endl;             // prints first element of a buffer

今まではすべてうまくいきましたが、これを呼び出すと、その理由がわかりません:

cout << &buffer[0] << endl;          

上記のコードは、バッファ内の最初の要素のアドレスを出力する必要がありますが(と同じ&buffer)、バッファ全体を出力しますcout << buffer << endl;

なぜそれが起こるのですか?

4

4 に答える 4