How to initialize a multidimensional arrays in C/C++

In C/C++, initialization of a multidimensional arrays can have left most dimension as optional. Except the left most dimension, all other dimensions must be specified. 
For example, following program fails in compilation because two dimensions are not specified. 

C

#include
int main()
{
int a[][][2] = { {{1, 2}, {3, 4}},
				{{5, 6}, {7, 8}}
				}; // error
printf("%d", sizeof(a));
getchar();
return 0;
}

C++

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[][][2] = { {{1, 2}, {3, 4}},
				{{5, 6}, {7, 8}} }; // error
cout << sizeof(a);
getchar();
return 0;
}

// This code is contributed by Mayank Tyagi

Following 2 programs work without any error.

C

// Program 1
#include
int main()
{
int a[][2] = {{1,2},{3,4}}; // Works
printf("%lu", sizeof(a)); // prints 4*sizeof(int)
getchar();
return 0;
}

C++

// Program 1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[][2] = {{1, 2}, {3, 4}}; // Works
cout << sizeof(a); // prints 4*sizeof(int)
return 0;
}

// This code is contributed by Mayank Tyagi

C

// Program 2
#include
int main()
{
int a[][2][2] = { {{1, 2}, {3, 4}},
					{{5, 6}, {7, 8}}
				}; // Works
printf("%lu", sizeof(a)); // prints 8*sizeof(int)
getchar();
return 0;
}

C++

// Program 2
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[][2][2] = { {{1, 2}, {3, 4}},
					{{5, 6}, {7, 8}} }; // Works
cout << sizeof(a); // prints 8*sizeof(int)
return 0;
}

// This code is contributed by Mayank Tyagi

 

Submit Your Programming Assignment Details