前提・実現したいこと
このソースコードは正しいもの(エラーが出ず、結果も希望のもの)らしいですが、意味が分からないので質問しました。
発生している問題・エラーメッセージ
僕の中の問題ですが average += data[i]; は、intにintへのポインタを入れていることになっておかしくないですか? data[i]=*(data+i)(このとき右辺のdataは配列dataの先頭アドレスを指すということは知っています)なのでintへのポインタだと思ってます。
該当のソースコード
C
1#include <stdio.h> 2 3int main(void) 4{ 5 int *data; 6 int i,average = 0,array[10] = {15,78,98,15,98,85,17,35,42,15}; 7 8 data = array; /* ポインタ変数に配列のアドレスを代入 */ 9 10 for (i = 0;i < 10;i++) { 11 average += data[i]; /* 配列みたいに使える */ 12 } 13 14 printf("%d\n",average / 10); 15 return 0; 16}
試したこと
このソースコードだと理解できたのですが、上のコードの方ポピュラーらしく、上のコードを理解したいと思っています。
#include<stdio.h>
int main(void)
{
int *data;
int average=0;
int array[10]={1,2,3,4,5,6,7,8,9,10};
for(data=array; data!=&array[10]; data++){
average+=*data;
}
printf("%d\n", average/10);
return 0;
}
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/17 03:58