ページ 11

配列

Posted: 2013年1月13日(日) 19:28
by きき
現在配列をやっております
そこでひとつ聞きたいんですが、
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: 配列

Posted: 2013年1月13日(日) 19:32
by h2so5
sizeof(data)は配列全体のサイズ、sizeof(dara[0])は配列の一つの要素のサイズを返します。

配列全体のサイズ = 配列の一つの要素のサイズ × 配列の要素数 ですから、

配列全体のサイズ ÷ 配列の一つの要素のサイズ = 配列の要素数 となります。

Re: 配列

Posted: 2013年1月13日(日) 19:33
by box
きき さんが書きました:

コード:

	int data[] = {79,42,39,79,13,75,19};
(sizeof(data)/sizeof(dara[0]));
厳密に言うとこれで配列の数が求められるのが意味が分かりません
sizeof(data)とは、配列data[]のために確保した領域全体の大きさです。
sizeof(data[0])とは、配列data[]の先頭要素data[0]のために確保した領域の大きさです。
割り算の結果は、配列data[]の要素数となります。

Re: 配列

Posted: 2013年1月13日(日) 21:27
by きき
わかりやすい説明ありがとうございます!
なんかとても簡単に理解できました!
お二方本当にありがとうございました