我有一个简单的程序:
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;
为什么会这样?