ページ 11

多次元配列の関数への渡し方

Posted: 2017年1月27日(金) 15:58
by にゃんにゃん
fdtd-2dのベンチマークコード(http://web.cse.ohio-state.edu/~pouchet/ ... polybench/)を見ていたところ
関数への多次元配列に引き渡しに以下の記述が使われていました.
この渡し方は正しい方法なのでしょうか?
これが正しくなる規格はどれなのか教えて欲しいです.

コード:

static void kernel_fdtd_2d(int tmax,                                                                                                                                                   
  int nx, int ny,                                                                                                                                                                       
  double ex[ nx + 0][ny + 0],                                                                                                                                                   
  double ey[ nx + 0][ny + 0],                                                                                                                                                   
  double hz[ nx + 0][ny + 0],                                                                                                                                                   
  double _fict_[ tmax + 0]){
// ex[i][j] = xxx という書き方で記述されている
}

int main(int argc,char **argv){
  double *ex,*ey,*hx;
  ex = malloc( ... );
  ey = malloc( ... );
  hx = malloc( ... );
  kernel_fdtd_2d(tmax,nx,ny,ex,ey,hx);
  return 0;
}

Re: 多次元配列の関数への渡し方

Posted: 2017年1月27日(金) 17:14
by みけCAT
double (*)[(sizetype)(ny)]型の引数としてdouble*型のデータを渡しているので、
間違っていると思います。