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