當我編譯並運行這個C++代碼時,我沒有得到我期望的輸出。C++打印指針值給出奇怪的結果
#include <iostream>
using namespace std;
int main()
{
int * i = new int;
long * l = new long;
char * c = new char[100];
float * f = new float[100];
cout << "i " << i << endl;
cout << "l " << l << endl;
cout << "c " << c << endl;
cout << "f " << f << endl;
delete i;
delete l;
delete []c;
delete []f;
cin.get();
return 0;
}
在UNIX機器上,我得到
i 0x967f008
l 0x967f018
c
f 0x967f090
在Windows機器上對C打印值作爲經過一條線路的隨機字符。
請有人可以解釋爲什麼它不正確地打印字符數組的指針。
感謝
是什麼做的C++方式:'(無效*)C'? –
這將是'reinterpret_cast(c)'。 –
Mat
@hexa:儘管@Mat是正確的,因爲'(void *)c'等價於'reinterpret_cast(c)',所以* C++的做法是'static_cast (c)'; –