指針爲什麼印刷與<iostream>
#include <iostream>
using namespace std;
int main() {
cout << (char*)0x10 << endl;
}
段錯誤,但
#include <iostream>
using namespace std;
int main() {
cout << (void*)0x10 << endl;
}
似乎只是正常工作?
指針爲什麼印刷與<iostream>
#include <iostream>
using namespace std;
int main() {
cout << (char*)0x10 << endl;
}
段錯誤,但
#include <iostream>
using namespace std;
int main() {
cout << (void*)0x10 << endl;
}
似乎只是正常工作?
因爲
cout::operator <<(void*)
打印內存地址,並
cout::operator <<(char*)
打印一個空終止字符數組,你遇到不確定的行爲,當您嘗試從0x10
閱讀char
陣列。
有用於<<
與char*
特殊的超載,讓C風格的字符串可以輸出容易。
因此
cout << (char*)0x10 << endl;
試圖打印出位於(char*)0x10
字符串是不是內存它應該來看看。
ostream::operator<<
的過載,存在version for char*
它解釋給定的指針作爲空終止字符串。
明白了。謝謝! – abeln 2012-07-31 22:09:48
@abeln肯定!... – 2012-07-31 22:10:35