int ***p = NULL;
int *tmp = NULL,i,j,k, m = 5, n = 4;
p = (int ***)malloc(sizeof(int **) * m);
tmp = (int *)malloc(sizeof(int) *m*n*3);
for(i =0; i< m; i++) {
p[i] = (int **)malloc(sizeof(int *) *n);
for (j = 0; j < n; j++) {
p[i][j] = tmp + (i * n *3 ) + j * 3;
}
}
for (i = 0; i < m ; i ++){
for (j = 0; j < n; j ++) {
for (k = 0; k < 3; k ++) {
p[i][j][k] = i *100 + j *10 + k;
}
}
}
for ( i = 0; i < m *n *3; i ++) {
printf("%d\n",*(tmp + i ));
}
for (i = 0; i < m; i ++) {
free(p[i]);
}