我有一個簡單的程序:指針和引用「字符緩衝區[128]」
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;
爲什麼出現這種情況?
的memset的後,添加緩衝液[的sizeof(緩衝器)-1] = '\ 0';因爲在某些情況下你會想要一個以零結尾的字符串。 – Nicholaz