#include <stdio.h>

int **malloc_2D(size_t x, size_t y)
{
 int **array_2d;
 int *p;
 size_t row;

 array_2d=malloc(x*y*sizeof(**array_2d));
 if(array_2d == NULL)
  return NULL;
 else
  {
   for(row=0, p=(int *)array_2d+x; row<x; row++, p+=y)
    array_2d[row]=p;
  }
 return array_2d;
}

int main()
{
 int **array;
 int i, j, total=0, row=4, col=7;

 array=malloc_2D(row,col);
 if(array==NULL)
  {
   fprintf(stderr, "Kein Speicher für das 2D-Array bekommen......\n");
   exit(0);
  }

 for(i=0; i<row; i++)
  for(j=0; j<col; j++)
   array[i][j]=i+j;

  for(i=0; i<row; i++)
   for(j=0; j<col; j++)
     printf("array[%d][%d]=%d\n",i,j,array[i][j]);

 return 0;
}

