请问分配动态内存给二维数组,怎么不对啊,求指点
#include<stdlib.h>int main()
{
int i,j,n,m,**p;
printf("请输入二维数组行和列:\n");
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
p=(int**)malloc(sizeof(*p)*n);
if(*p==NULL)
{printf("内存行分配失败!\n");
exit(1);
}
for(i=0;i<m;i++)
{
p[j]=(int*)calloc(m,sizeof(int));
if(p==NULL){printf("内存列分配失败!\n");
exit(1); }
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(*(p+i)+j)=i+j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d",*(*(p+i)+j));
printf("\n");
}
free(p);
return 0;
}