概要
動的に 2 次元配列を確保します。
プロトタイプ
void *AllocArray2D(int size2, int size1, int size0);
戻り値
確保した 2 次元配列へのポインタが返ります。
パラメータ
size2
2 次元配列の左側の要素数
size1
2 次元配列の右側の要素数
size0
配列の要素サイズ
解説
AllocArray2D 関数は、2 次元配列を動的に確保します。返されたポインタを使うと [size2][size1] の多次元配列として使うことができます。size0 には、sizeof(float) などデータ型のサイズを指定します。確保した配列は FreeArray2D 関数で解放しなければなりません。この関数の等価コードを以下に示します。
等価コード
void *AllocArray2D(int size2, int size1, int size0){ void **adr2 = (void **)malloc(size2*sizeof(void *)); void *adr1 = malloc(size2*size1*size0); int i, width1 = size1*size0; for(i = 0; i<size2; i++) adr2[i] = (char *)adr1+i*width1; return adr2; }
プログラム例
/* * このプログラムは array2d に float 型 * 2 次元配列を割り当て、0.0f で初期化します。 */ void main(){ int sx = 64, sy = 48, x, y; float **array2d = (float **)AllocArray2D(sy, sx, sizeof(float)); for(y = 0; y<sy; y++) for(x = 0; x<sx; x++) array2d[y][x] = 0.0f; FreeArray2D(array2d); }