現在配列をやっております
そこでひとつ聞きたいんですが、
code
#include <stdio.h>
int main(void)
{
int data[] = {79,42,39,79,13,75,19};
int i,sum = 0,avg;
for (i = 0;i < sizeof(data) / sizeof(data[0]);i++) {
sum += data;
}
avg = sum / (sizeof(data) / sizeof(data[0]));
printf("%d\n",avg);
return 0;
}
/code
このプログラムでavg = sum / (sizeof(data) / sizeof(data[0]));の部分が気になりました
何故sum÷配列の数になるかがわかりません
(sizeof(data)/sizeof(dara[0]));
厳密に言うとこれで配列の数が求められるのが意味が分かりません
どなたかわかりやすく説明していただけないでしょうか??
配列
Re: 配列
sizeof(data)は配列全体のサイズ、sizeof(dara[0])は配列の一つの要素のサイズを返します。
配列全体のサイズ = 配列の一つの要素のサイズ × 配列の要素数 ですから、
配列全体のサイズ ÷ 配列の一つの要素のサイズ = 配列の要素数 となります。
配列全体のサイズ = 配列の一つの要素のサイズ × 配列の要素数 ですから、
配列全体のサイズ ÷ 配列の一つの要素のサイズ = 配列の要素数 となります。
Re: 配列
sizeof(data)とは、配列data[]のために確保した領域全体の大きさです。
sizeof(data[0])とは、配列data[]の先頭要素data[0]のために確保した領域の大きさです。
割り算の結果は、配列data[]の要素数となります。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。