当输入时,要根据列数的多少来进行分配...
如果根据行数的话会使空间重合。。。
输出时也要很据列数...
#include"stdio.h" #include"stdlib.h" int main() { int n,m,*p,i,j; scanf("%d%d",&n,&m); p=(int*)malloc(n*m*sizeof(int)); for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",p+m*i+j);//这里分配时要按照列数来分配!!! for(i=0;i<m;i++) { for(j=0;j<n;j++)//输出n个元素 printf("%d ",*(p+m*j+i));//输出时也要根据列数 printf("\n"); } return 0; }