|
>>二次元配列の場合
>二次元ではなくて、「配列の配列」。
どういう意味でしょうか?
「配列の配列」は「2次元配列」です。
規格書 JIS X3010:2003(ISO/IEC 9899:1999) に次のような記述があります。
: 6.5.2.1 配列の添字付け
: ....
: 連続した添字演算子は、多次元配列の要素を指し示す。Eが次元 i×j×...×k
: をもつ n次元配列 (n≧2)である場合、E(左辺値以外として用いた場合。)は、
: 次元 j×...×k をもつ (n-1)次元配列へのポインタに型変換する。
また、「6.7.8 初期化」のところには、1次元配列、2次元配列、3次元配列の
初期化の例が載っています。
さて、double a[8][10]; という宣言があれば、a は「配列の配列」であり、
それは「2次元配列」です。
次のように書いた場合、a は「ポインタの配列」ですが、配列の要素は、
「2次元配列」と同じように参照できます。
double *a[8];
int i, j;
for (i = 0; i < 8; i++)
a[i] = malloc(sizeof(double) * 10);
for (i = 0; i < 8; i++)
for (j = 0; j < 10; j++)
fscanf(fp, "%lf", &a[i][j]);
また、double **a = malloc(sizeof(double *) * 8); と書くと、
a は「ポインタへのポインタ」ですが、a[i][j] で参照できます。
最初の質問者は、C++ でプログラムを書いているようですが、
この件に関しては C と同じです。
|