-9

だから私はこれまでのところ次のコードを持っています:

#include <stdio.h>

int foo (int *pointer, int row, int col); 

int main() {
  int array[3][3] ={ {1,2,3},{4,5,6},{7,8,9}};

  int *pointer= array[0];

  int row = 2; 
  int col = 2; 

  int answer = foo (pointer, row, col); 

  printf("%d", answer); //prints 5 (which is wrong)
  printf("%d", array[2][2]); //prints 9
}

int foo (int *pointer, int row, int col){ //I don't want to use any square brackets here, unless I really have to. 
  int value; 
  value = *((int *)(pointer+row)+col); 

return value; 
}

私の主な問題は、2D ポインタを渡すことです。私はまだコーディングが初めてなので、詳しく説明してください。渡しているものを実際に変更したくありません(たとえば、foo(ポインター、行、列)ではなく foo(配列、行、列)でポインターを使用したいなど)。

4

2 に答える 2