配列

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
きき

配列

#1

投稿記事 by きき » 13年前

現在配列をやっております
そこでひとつ聞きたいんですが、
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]));
厳密に言うとこれで配列の数が求められるのが意味が分かりません

どなたかわかりやすく説明していただけないでしょうか??

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 配列

#2

投稿記事 by h2so5 » 13年前

sizeof(data)は配列全体のサイズ、sizeof(dara[0])は配列の一つの要素のサイズを返します。

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

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

box
記事: 2002
登録日時: 15年前

Re: 配列

#3

投稿記事 by box » 13年前

きき さんが書きました:

コード:

	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: 配列

#4

投稿記事 by きき » 13年前

わかりやすい説明ありがとうございます!
なんかとても簡単に理解できました!
お二方本当にありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る