Try this
Code:
#include <iostream>
#include <iomanip>
using namespace std;
/* make int a[max_x][max_y][max_z] */
int ***make3d ( int max_x, int max_y, int max_z ) {
int ***px = new int**[max_x];
int **py = new int* [max_x * max_y];
int *pz = new int [max_x * max_y * max_z];
int rx, ry, rz;
for ( rx = 0 ; rx < max_x ; rx++ ) {
px[rx] = py;
py += max_y;
for ( ry = 0 ; ry < max_y ; ry++ ) {
px[rx][ry] = pz;
pz += max_z;
for ( rz = 0 ; rz < max_z ; rz++ ) {
px[rx][ry][rz] = rx + ry + rz;
}
}
}
return px;
}
void show ( int ***a, int max_x, int max_y, int max_z ) {
int rx, ry, rz;
for ( rx = 0 ; rx < max_x ; rx++ ) {
for ( ry = 0 ; ry < max_y ; ry++ ) {
for ( rz = 0 ; rz < max_z ; rz++ ) {
cout << setw(4) << a[rx][ry][rz];
}
cout << endl;
}
cout << "--" << endl;
}
}
void free3d ( int ***a ) {
delete [] a[0][0];
delete [] a[0];
delete [] a;
}
int main ( ) {
int ***a = make3d ( 2, 3, 4 );
show ( a, 2, 3, 4 );
free3d ( a );
return 0;
}
If this is C++, consider using say vectors.