c语言用malloc动态创建二维数组

#include <stdio.h>
#include <stdlib.h>
void fun(int m,int n){//行数,列数
int **p = (int**)malloc(m*sizeof(int*));
int i,j;
for(i=0;i<n;i++){
p[i] = (int*)malloc(sizeof(int*));
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%d ",&p[i][j]);
}
printf("\n");
}
}
int main() {
fun(3,4);
return 0;
}