ポインタのプログラムについて
以下のプログラムを実行したとき、表示される値を余白に記述せよ。ただし、配列idataは1000番地から格納されているとする。また、表示結果*8**~*10**の箇所で、正しく計算された値のみ表示させるには、maxはいくらに設定すればよいか。という課題なんですが、実際にプログラムを作ってみてmaxの箇所を4にしてみたところ間違いと言われたので正しいmaxの値を教えて下さい。
#include<stdio.h>
int main(void)
{
int iv,idata[]={2,4,6,8,10,12},*ip,i,max;
iv=idata[0];
printf("*1*ivの値=%d\n",iv);
ip=&idata[0];
printf("*2*ipの値=%p\n",ip);
ip=&idata[1];
printf("*3*ipの値=%p\n",ip);
ip=&idata[2];
printf("*4*ipの値=%p\n",ip);
iv=*ip;
printf("*5*ivの値=%d\n",iv);
iv=*ip+3;
printf("*6*ivの値=%d\n",iv);
iv=*(ip+3);
printf("*7*ivの値=%d\n",iv);
max=4;
*ip=0;
for(i=0;i<max;i++){
printf("*8**(ip+%d)=%d\n",i,*(ip+i));
}
*(ip+1)=10;
for(i=0;i<max;i++){
printf("*9**(ip+%d)=%d\n",i,*(ip+i));
}
*(ip+3)=20;
for(i=0;i<max;i++){
printf("*10**(ip+%d)=%d\n",i,*(ip+i));
}
ip=&idata[0];
printf("*11*ipの値=%p\n",ip);
ip=ip+2;
printf("*12*ipの値=%p\n",ip);
iv=*ip+3;
printf("*13*ipの値=%d\n",iv);
iv=*(ip+3);
printf("*14*ivの値=%d\n",iv);
++ip;
printf("*15*ipの値=%p\n",ip);
}
ヒントは”正しく計算された値のみ”という部分らしいのですが、自分にはまったく分りませんでした。
お礼
解決いたしました。ありがとうございました。