初めてお世話になります。よろしくお願いします。
ポインタ変数とアドレスについて調べる問題なのです。元々はint型だったのを私が以下のように
char型に変えました。これを今度はdouble型に変えたいのですがこれができません。
さらに、printf("%p) = ox%x\n", ptr_d, *ptr_d):を用いて表示すると図1のようになる。これを図2のように表示しなさいという問題です。
[図1] [図2]
0.22ccc0) = 0.3020100 ptc_d:0.22ccc0) = 0.3020100
0.22ccc8) = 0.b0a0306 0.22ccc4) = 0.7060504
ptr_d:0.22ccc8) = 0.b0a0306
0.22cccc) = 0.f0e0d0e
#include <stdio.h>
int main(void){
char src[32], dst[32];
char *ptr_c, *a;
int *ptr_i, *ptr;
double *ptr_d;
int i;
// src配列にデータを格納
for(i=0; i<32; i++){
src = i;
}
// ptr_cにsrcの先頭アドレスをコピー
ptr_i =(int *) src;
// ptrを使用してsrcのデータを内容を出力する。
for(i=0; i<8; i++){
printf("%p) = 0x%x\n", ptr_i, *ptr_i);
ptr_i++;
if(i==6){
a = (char *) ptr_i;
}
}
printf("アドレスの差=%d",(char *) ptr_i - a);
}
どうぞよろしくお願いします。
ポインタ変数について
Re:ポインタ変数について
> [図1] [図2]
> 0.22ccc0) = 0.3020100 ptc_d:0.22ccc0) = 0.3020100
> 0.22ccc8) = 0.b0a0306 0.22ccc4) = 0.7060504
> ptr_d:0.22ccc8) = 0.b0a0306
> 0.22cccc) = 0.f0e0d0e
そもそも、与コードの出力結果が図1のようにならないところに、
回答が付かない原因があるのではないでしょうか。
> 0.22ccc0) = 0.3020100 ptc_d:0.22ccc0) = 0.3020100
> 0.22ccc8) = 0.b0a0306 0.22ccc4) = 0.7060504
> ptr_d:0.22ccc8) = 0.b0a0306
> 0.22cccc) = 0.f0e0d0e
そもそも、与コードの出力結果が図1のようにならないところに、
回答が付かない原因があるのではないでしょうか。