int a[3][2]; // 2 次元配列 double b[3][2][5]; // 3 次元配列
int *z = (int *)a; // z = &a[0][0]; でも良い
int *z = &a[1][0]; // int *z = a[1]; でも良い
int x1[][] = {{1, 2}, {3, 4}, {5, 6}}; // 誤り int x1[3][2] = {{1, 2}, {3, 4}, {5, 6}}; // 3行2列 int x1[3][2] {{1, 2}, {3, 4}, {5, 6}}; も OK int x2[][2] = {{1, 2}, {3, 4}}; // 2行2列 int x2[][2] {{1, 2}, {3, 4}}; も OK int x3[3][] = {{1, 2}, {3, 4}}; // 誤り char c1[5][10] = {"zero", "one", "two", "three"}; // 5行10列 char c2[][10] = {"zero", "one", "two", "three"}; // 4行10列 char *c3[] = {"zero", "one", "two", "three"}; // 4つのポインタ char c4[5][] = {"zero", "one", "two", "three"}; // 誤り
double** pd = new double* [2]; // 2つの要素からなるポインタの配列 for (i1 = 0; i1 < 2; i1++) pd[i1] = new double [3]; // 行毎に列数を変えることも可能 // 以下のような方法で初期設定も可能 double** pd = new double* [2]; pd[0] = new double [3] {1, 2, 3}; pd[1] = new double [3] {4, 5, 6};
for (i1 = 0; i1 < 2; i1++) delete [] pd[i1]; delete [] pd;