int hoge[100], fuga[200][200]; double foo[300], bar[4][4][4];
int hoge[3]={111,222,333};
int fuga[2][2]={{111,222},{333,4444}};
i[3]=5; /* 配列 i[3] に 5 を代入 */ c=j[25][49]; /* 配列 j[25][49] の値を変数 c へ代入 */
for(i=0; i<=360; i++){
my_sin[i]=sin(M_PI*i/360.0);
}
FILE *in_file;
in_file = fopen("exercise.txt", "r");
for(i=0; i<10000; i++){
fscanf(in_file,"%d%d%d%d",
&data[i][0],&data[i][1],&data[i][2],&data[i][3]);
}
fclose(in_file);
単純型の変数と配列では,ユーザー定義関数にデータを渡す方法は大きく異なる.
実際に,ユーザー定義関数に配列を渡す例をリスト1で見てみよう. このプログラムでは呼び出し側では配列名のみを,ユーザー定義関数では配列名と左端を 空欄とした要素数を記述している.こうすることにより,ユーザー定義関数に配列のデー タを渡すことができる.
sum_data = cal(data);
長いので省略
int cal(int hoge[][4]){
ここに関数での処理の内容を書く.
return sum0+sum1+sum2+sum3;
}
-76797 99987 53528 -43172 -34698 44783 -106207 -106631 -83424 31615 18774 -4134 78694 -886 64632 103022 -86516 -99744 -51044 -11396 90058 54995 -39364 -36610 -78969 106494 -5209 -95276 75913 32002 39260 106490 24615 -14585 -44056 97291 -77175 -42889 98034 -53226 96100 9434 50013 67420 この辺は長いので省略 100747 -2875 37515 4509 77468 12111 76950 82072 -102787 41331 75324 -96228 -53535 -6367 65795 -62947
1 #include <stdio.h>
2
3 int cal(int hoge[][4]); // プロトタイプ宣言
4
5 double ave0, ave1, ave2, ave3; // 各列の平均値はグローバル変数とする
6
7 //===========================================================================
8 // main 関数
9 //===========================================================================
10 int main(void)
11 {
12 FILE *in_file;
13 int i,data[10000][4], sum_data;
14
15 in_file = fopen("/home/yamamoto/tmp/program/int_data.txt", "r");
16
17 for(i=0; i<10000; i++){
18 fscanf(in_file,"%d%d%d%d",
19 &data[i][0],&data[i][1],&data[i][2],&data[i][3]);
20 }
21
22 fclose(in_file);
23
24 sum_data = cal(data);
25
26 printf("sum all = %d\n", sum_data);
27 printf("average = %f\t%f\t%f\t%f\n", ave0,ave1,ave2,ave3);
28
29 return 0;
30 }
31
32 //===========================================================================
33 // データ処理のためのユーザー定義関数
34 //===========================================================================
35 int cal(int hoge[][4]){
36 int i;
37 int sum0=0, sum1=0, sum2=0, sum3=0;
38
39 for(i=0; i<10000; i++){
40 sum0+=hoge[i][0];
41 sum1+=hoge[i][1];
42 sum2+=hoge[i][2];
43 sum3+=hoge[i][3];
44 }
45
46 ave0=sum0/10000.0;
47 ave1=sum1/10000.0;
48 ave2=sum2/10000.0;
49 ave3=sum3/10000.0;
50
51 return sum0+sum1+sum2+sum3;
52 }
sum all = -15594426 average = -612.222100 377.635000 -430.162000 -894.693500