假如对于M*N的数组,第一种方法:
int *b=(int*)malloc(sizeof(int)*M*N);
for(i=0;i<M;i++)
for(j=0;j<N;j++){
b[i*N+j+1]=a[i][j];
printf("%d\t",b[i*N+j+1]);
即利用一维数组计算二维数组下标的方法。
第二种方法:
int **c=(int**)malloc(sizeof(int*)*M);
for(i=0;i<M;i++)
*(c+i)=(int*)malloc(sizeof(int)*N);
for(i=0;i<M;i++)
for(j=0;j<N;j++){
c[i][j]=a[i][j];
printf("%d\t",c[i][j]);
}
即先申请行的指针,在申请列的指针,显然第一种方法比较省时间。