現在練習としてあるプログラムを作成しているのですが、その中で二次元の構造体配列のメンバを関数へ渡す必要が出てきました。
しかし、"warning C4047:関節参照のレベルが~"などのエラーを吐いてしまい、うまくいきません。
以下のプログラムは構造体teststr[10][15]のメンバb[5]に0~4を代入してすべて合計するテストプログラムです。
コンパイル時にエラー「error C2088: '[' : struct に対して正しくありません。」が出力されます。
sum関数へ構造体のデータを渡す方法がまずいのでしょうか?
それとも二次元の構造体配列という仕様自体を見なおした方が良いですか?
ご教授願います。
コンパイラはVisual Studio 2013を使用しています。
#include <stdio.h>
int test(struct test *a);
struct test
{
int a;
int b[5];
};
int main(void)
{
struct test teststr[10][15];
int i,j,k;
//0~4を代入
for(i=0;i<10;i++)
{
for(k=0;k<15;k++)
{
for(j=0;j<5;j++)
{
teststr[i][k].b[j]=j;
}
}
}
//代入確認用のprintf
for(i=0;i<10;i++)
{
for(k=0;k<15;k++)
{
for(j=0;j<5;j++)
{
printf("teststr[%d][%d].b[%d]=%d\n",i,k,j,teststr[i][k].b[j]);
}
}
}
printf("%d",sum(teststr));
return 0;
}
int sum(struct test *a)
{
int i,j,k;
int X=0;
for(i=0;i<10;i++)
{
for(k=0;k<15;k++)
{
for(j=0;j<5;j++)
{
X=X+a[i][k].b[j];
}
}
}
return X;
}