C/C++では配列で宣言された領域の初期化では、
全て{}のみで行うことが出来ます。
#include <iostream>
using namespace std;
#define ARRAY_SIZE 3
int main( void )
{
int i, j, k;
int a1[ARRAY_SIZE][ARRAY_SIZE][ARRAY_SIZE] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
};
int a2[ARRAY_SIZE][ARRAY_SIZE][ARRAY_SIZE] = {
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
},
{
{ 10, 11, 12 },
{ 13, 14, 15 },
{ 16, 17, 18 }
},
{
{ 19, 20, 21 },
{ 22, 23, 24 },
{ 25, 26, 27 }
}
};
// a1
for( i = 0; i < ARRAY_SIZE; ++i)
{
for( j = 0; j < ARRAY_SIZE; ++j)
{
cout << "(";
for( k = 0; k < ARRAY_SIZE; ++k)
{
cout << a1[i][j][k];
if(k < 2) cout << ",";
}
cout << ")";
if(j < 2) cout << ",";
}
cout << endl;
}
// a2
for( i = 0; i < ARRAY_SIZE; ++i)
{
for( j = 0; j < ARRAY_SIZE; ++j)
{
cout << "(";
for( k = 0; k < ARRAY_SIZE; ++k)
{
cout << a2[i][j][k];
if(k < 2) cout << ",";
}
cout << ")";
if(j < 2) cout << ",";
}
cout << endl;
}
return 0;
}
このように、どちらで初期化しても、
きちんとした値で初期化することが可能です。
これは宣言された多次元配列のメモリ領域が
連続していることを意味します。
#これは2次元配列でも同様に行うことが出来ます