以下のコード フラグメントを検討してください。
double * p = new double[16];
int value = 1;
void * q = p;
*((double *)q) = value;
int x = ((long *)p)[0];
cout << "Value of x for double * to long * = " << x << endl;
*((int *)q) = value ;
x = ((long *)p)[0];
cout << "Value of x for int * to long * = " << x << endl;
ここで、出力はそれぞれ 0 と 1 です。誰かが私に理由を説明できますか?
また、ポインタの値に直接アクセスすると...つまり。p[0]、どちらの場合も値は 1 として正しく表示されます。なんで?