ページ 11

ポインタ変数について

Posted: 2010年6月12日(土) 22:37
by prester
初めてお世話になります。よろしくお願いします。
ポインタ変数とアドレスについて調べる問題なのです。元々は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:ポインタ変数について

Posted: 2010年6月13日(日) 22:23
by prester
誰もわかりませんか?

Re:ポインタ変数について

Posted: 2010年6月13日(日) 22:46
by box
> [図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のようにならないところに、
回答が付かない原因があるのではないでしょうか。

Re:ポインタ変数について

Posted: 2010年6月14日(月) 00:10
by シエル
どこがどうできないのか具体的に説明して下さい。