/*
 *  This file shows how to initialize 3D arrays.
 */

#include <stdio.h>

int main(int argc, char *argv[])
{
	// mat1 : fully structured form  (correct)
	int mat1[3][4][2] = {
		{{1, 2}, {3, 4}, {5, 6}, {7, 8}},
		{{9, 10}, {11, 12}, {13, 14}, {15, 16}},
		{{17, 18}, {19, 20}, {21, 22}, {23, 24}}
	};

	// mat2 : one-line form
	int mat2[3][4][2] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};

	/*
	// mat3 : fully structured form (incorrect)  
	int mat3[3][4][2] = {
		{{1, 2, 3, 4}, 
		 {5, 6, 7, 8},
		 {9, 10, 11, 12}}, 
		{{13, 14, 15, 16},
		 {17, 18, 19, 20}, 
		 {21, 22, 23, 24}}
	};
	*/
	
	int i=0, j=0, k=0;   // index variables

	printf("----------------\n");
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			for (k = 0; k < 2; k++)
				printf("%d ", mat2[i][j][k]);
			printf("\n");
		}
		printf("----------------\n");
	}
	return 0;
}
