your code is right too, but I merely want to say it can be furthur optimised
I mean second for loop is redundant
try this code
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,j,count=1;
int **a=(int**)malloc(3*sizeof(int*));
for(i=0; i<3; i++)
{
a[i]=(int*)malloc(4*sizeof(int));
for(j=0; j<4; j++)
{
a[i][j]=count; count++;
}
}
printf("\n");
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 4;
}