-4
#include "stdio.h"

void main(){
 int a[2][2]={1, 2, 3, 4};
 int a[2][2]={1, 2, 3, 4};
 display(a, 2, 2);
 show(a, 2, 2);}
}

display(int *k, int r, int c){
int i, j, *z;
 for(i = 0; i < r; i++){
   z = k + i;
   printf("Display\n");
      for(j = 0; j < c; j++){
          printf("%d", *(z + j));
       }
  }
}

show(int *q, int ro, int co){
int i, j;
   for(i = 0; i < ro; i++){
     printf("\n");
     for(j = 0; j < co; j++){
       printf("%d", *(q + i*co + j));
     }
   }
}

出力:

Display
12
23
Show
12
34

1234 がDisplay()表示されるのに 1223 が表示されないのはなぜですか? show()どちらも同じロジックを使用して 2 次元配列を表示します。誰でも助けてもらえますか?

4

2 に答える 2

0

ここでは、行と列のdisplay2つのカウンターを使用しています。配列はメモリ内に順番に配置されるため、ある行から次の行に移動するたびに、列のサイズ、つまりcだけ増やす必要があります。したがって、ではなくkに追加する必要があります。ijii*ci

完全な機能:

display(int *k,int r,int c){
int i,j,*z;
 for(i=0;i<r;i++){
   z=k+i*c;
   printf("Display\n");
      for(j=0;j<c;j++){
          printf("%d",*(z+j));
       }
  }
}
于 2012-07-15T15:27:33.340 に答える