を調べてみたのですが、理解できません。
以下のようなコードを書いたのですが、エラーになってします。
どのように書くべきか、教えて頂きたいです。
よろしくお願いします。
#include <stdio.h>
int a[3][5]={ // 2次元配列 (グローバル変数)
{1,2,3,4,5}, // y=0
{2,3,4,5,6}, // y=1
{3,4,5,6,7} // y=2
};
int b[3][5]={
{11,22,33,44,55},
{22,33,44,55,66},
{33,44,55,66,77}
};
int main(){
int x,y;
int *p;
x=3; y=1; // a 配列の x=3 y=1 なら 5 のはず
p=a[0];
printf("1st test %d\n",p[5*y+x]); // 1次元配列としてアクセス
p=b[1]; // これで y=1 の先頭を指す
printf("2nd test %d\n",p[3]); // b 配列の x=3 y=1 、つまり 55 のはず
p=b;
// printf("3rd test %d\n",p[1][3]); // error になる
return 0;
}
/*
test.c:27:29: error: subscripted value is neither array nor pointer nor vector
printf("3rd test %d\n",p[1][3]);
*/