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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
にゃんにゃん

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

#1

投稿記事 by にゃんにゃん » 8年前

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;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 8年前

double (*)[(sizetype)(ny)]型の引数としてdouble*型のデータを渡しているので、
間違っていると思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る