最初のエラー:C - 1次元配列を2つにマップする - なぜこれは機能しないのですか?
error: a value of type "float *" cannot be used to initialize an entity of type "float (*)[2000]"
HERESに関連するコード:私は後で関数に二重ポインタを渡すと、参照できるように2次元にそれを正規化しようとしてい
#define opType float
const int N = 2000;
opType *a_h,*b_h,*d_h, *a_d,*b_d, *d_d;
opType (*normalized_a)[N] = a_h;
opType (*normalized_b)[N] = b_h;
opType (*normalized_d)[N] = d_h;
opType (*normalized_a_d)[N] = a_d;
opType (*normalized_b_d)[N] = b_d;
opType (*normalized_d_d)[N] = d_d;
2つの次元は略式のブラケット構文を使用します。私はCUDAを使用していますので、メモリをコピーするための1次元宣言が必要です。上記の作業を行う方法はありますか?
この構築物は、あなたの配列の初期化のためのデータがどこから来るか、私は表示されませんhttp://forums.nvidia.com/index.php?showtopic=83941&view=findpost&p=475901
int linear[10*32]; // linear array
int (*twodim)[32] = linear; // interpreted as a two-dimensional [10][32] array.
assert(&twodim[2][4] == &linear[2*32 + 4]); // these are the same
'typedefを使用してください。 – nmichaels
良いキャッチ、私は将来を考えています。 –