ここでは、教科書のCプログラムです。ユーザーから3 * 5の2D配列を要求し、3行目を出力します。Cプログラム内の配列ポインタ
int* p[5]
と混同しています。なぜここに持っている必要があります[5]
、私はちょうどint* p
はOKだと思います。 int
配列内の次のメモリ空間を繰り返し追加してポイントすることができます。そして誰もこのプログラムでポインタの仕組みを説明できますか?
#include <stdio.h>
int main(void){
int a[3][5];
int i,j;
int *p[5];
p = &a[0];
printf("Please input:\n");
for(i = 0; i < 3; i++){
for(j = 0; j<5;j++){
scanf("%d\n",(*(p+i))+j);
}
}
p = &a[2];
printf("the third line is:\n");
for(j = 0; j<5; j++){
printf("%5d", *((*p)+j));
}
printf("\n");
}
2Dアレイは、アレイのちょうど配列です。 – alk
あなたは正しいです。 'p [5]'の必要はありません。明らかに、 'p [i]'への割り当てはありません。 –
'p = &a[0];'はコンパイルしないでください。 – immibis