例8.12は3×4の2次元配列は、要素を指すポインタ変数で2次元配列の各要素の値を出力する必要があります.
904 ワード
問題解決の考え方:
2 D配列の要素は整数型で、整数型変数に相当し、int*型ポインタ変数で指すことができます.
2 D配列の要素は、メモリに行順に格納されます.つまり、0の行のすべての要素が格納された後、1の行のすべての要素が格納されます.
したがって、整数要素を指すポインタ変数を使用して、各要素を順次指すことができます.
解題構想:依然として例8.12プログラムの2次元配列を用いると仮定し、例8.12で定義されたポインタ変数は変数または配列要素を指すが、現在は1次元配列を指すポインタ変数に変更される.
2 D配列の要素は整数型で、整数型変数に相当し、int*型ポインタ変数で指すことができます.
2 D配列の要素は、メモリに行順に格納されます.つまり、0の行のすべての要素が格納された後、1の行のすべての要素が格納されます.
したがって、整数要素を指すポインタ変数を使用して、各要素を順次指すことができます.
#include
int main()
{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p; //
for(p=a[0];p
例8.13は、2次元配列のいずれかの行のいずれかの列要素の値を出力する.解題構想:依然として例8.12プログラムの2次元配列を用いると仮定し、例8.12で定義されたポインタ変数は変数または配列要素を指すが、現在は1次元配列を指すポインタ変数に変更される.
#include
int main()
{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4],i,j; // p 4
p=a; // p 0
printf("please enter row and colum:");
scanf("%d,%d",&i,&j); //
printf("a[%d,%d]=%d
",i,j,*(*(p+i)+j)); // a[i][j]
return 0;
}