例8.12は3×4の2次元配列は、要素を指すポインタ変数で2次元配列の各要素の値を出力する必要があります.

904 ワード

問題解決の考え方:
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; }