Mảng 2 chiều con trỏ của con trỏ trong C, sao k chạy được ạ

#include<stdio.h>
#include<stdlib.h>

int main()
{	int m,n;
	printf("nhap m, n"); scanf("%d",&m); scanf("%d",&n);
	int **p;
	*p=(int*)malloc(m*sizeof(int*));
	for(int i=0; i<m ;i++)
		{
		p[i]=(int*)malloc(n*sizeof(int));
		}
	for(int i=0; i<m; i++)
		{
		for(int j=0; j<n; j++)
			{	printf("\nnhap p[%d][%d]",i+1,j+1);
				scanf("%d",*(p+i)+j);
			}
		}
	return 0;
}

copy code lên đây sao nó k giữ nguyên vậy ạ

#include<stdio.h>
#include<stdlib.h>

int main()
{	int m,n;
	printf("nhap m, n"); scanf("%d",&m); scanf("%d",&n);
	int **p;
	*p=(int*)malloc(m*sizeof(int*));
	for(int i=0; i<m ;i++)
		{
		p[i]=(int*)malloc(n*sizeof(int));
		}
	for(int i=0; i<m; i++)
		{
		for(int j=0; j<n; j++)
			{	printf("\nnhap p[%d][%d]",i+1,j+1);
				scanf("%d",*(p+i)+j);
			}
		}
	return 0;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?