Passing multi-dimensional Arrays

In case of multi-dimensional arrays, when passing it to a function one can either insert the full dimensions of the array:
void display2a(int intArray[ROWS][3])
{/* body */}
or one can leave the leftmost dimension unspecified:
void display(int intArray[][3])
{/* body */}
Because the compiler needs to know the array configuration in order to perform proper indexing, all other dimensions need to be specified. This holds whatever number of dimensions, whether they are three:
void display3(int intArray[][3][4])
{/* body */}
or more.

Example


#include <iostream>
using namespace std;

#define ROWS 2

void display2(int intArray[][3])
{
     cout << "bi-dimensional array:\n\n";
     for(int i = 0; i < ROWS; i++)
     {
           for(int j = 0; j < 3; j++)
                cout << intArray[i][j] << " ";
           cout << endl;
     }

     cout << "\n\n";
}

void display3(int intArray[][3][4])
{
     cout << "tri-dimensional array:\n\n";
     for(int i = 0; i < ROWS; i++)
           for(int j = 0; j < 3; j++)
                for(int k = 0; k < 4; k++)
                     cout << "level: " << i << " row: " << j << " column: " << k << " content: " <<
                                                                                        intArray[i][j][k] << endl;

     cout << "\n\n";
}

int main()
{   
     int biDimensionalArrayOfInt[ROWS][3];
     int triDimensionalArrayOfInt[ROWS][3][4];

     for(int i = 0; i < ROWS; i++)
           for(int j = 0; j < 5; j++)
                biDimensionalArrayOfInt[i][j] = i + j;

     for(int i = 0; i < ROWS; i++)
           for(int j = 0; j < 3; j++)
                for(int k = 0; k < 4; k++)
                     triDimensionalArrayOfInt[i][j][k] = i + j + k;

     display2(biDimensionalArrayOfInt);
     display3(triDimensionalArrayOfInt);
}

Output

bi-dimensional array:

0 1 2
1 2 3


tri-dimensional array:

level: 0 row: 0 column: 0 content: 0
level: 0 row: 0 column: 1 content: 1
level: 0 row: 0 column: 2 content: 2
level: 0 row: 0 column: 3 content: 3
level: 0 row: 1 column: 0 content: 1
level: 0 row: 1 column: 1 content: 2
level: 0 row: 1 column: 2 content: 3
level: 0 row: 1 column: 3 content: 4
level: 0 row: 2 column: 0 content: 2
level: 0 row: 2 column: 1 content: 3
level: 0 row: 2 column: 2 content: 4
level: 0 row: 2 column: 3 content: 5
level: 1 row: 0 column: 0 content: 1
level: 1 row: 0 column: 1 content: 2
level: 1 row: 0 column: 2 content: 3
level: 1 row: 0 column: 3 content: 4
level: 1 row: 1 column: 0 content: 2
level: 1 row: 1 column: 1 content: 3
level: 1 row: 1 column: 2 content: 4
level: 1 row: 1 column: 3 content: 5
level: 1 row: 2 column: 0 content: 3
level: 1 row: 2 column: 1 content: 4
level: 1 row: 2 column: 2 content: 5
level: 1 row: 2 column: 3 content: 6