私は簡単なプログラムを持っています:
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;
なぜそれが起こるのですか?