Khi tôi biên dịch và chạy mã C++ này, tôi không nhận được kết quả mong đợi.C++ Giá trị in của con trỏ cho kết quả lạ
#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;
}
Trên một máy unix tôi nhận được
i 0x967f008
l 0x967f018
c
f 0x967f090
Trên một máy cửa sổ giá trị cho các bản in c như trên một dòng ký tự ngẫu nhiên.
Xin vui lòng ai đó có thể giải thích lý do tại sao nó không in con trỏ cho mảng char một cách chính xác.
Cảm ơn
C++ cách để thực hiện là gì? –
sẽ là 'reinterpret_cast (c)'. –
Mat
@hexa: Mặc dù @Mat là đúng trong đó '(void *) c' tương đương với' reinterpret_cast (c) ', cách * C++ * của việc đó là' static_cast (c) '; –