以下是引用zklhp在2014-1-14 14:50:58的发言:
我感觉楼主的写法太复杂了 又得不到什么好处 还是新定义一个指针好 这样最清晰
我感觉楼主的写法太复杂了 又得不到什么好处 还是新定义一个指针好 这样最清晰
我觉得四种方法应该是同源 最清晰的当然是新定义一个指针这种方法
DO IT YOURSELF !
#include <stdio.h> #define M 5 #define N 5 int main(int argc, char* argv[]) { int zip[M][N]; int i,j; //以下是对二维数组进行简单的赋值 for(i=0;i<M;i++) { for(j=0;j<N;j++) { zip[i][j]=(i+1)*(j+1); } } printf("以下是按照普通方式对二维数组进行输出\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) { printf("%4d",zip[i][j]); } } printf("\n\n\n以下是第一种转换一维数组之后的输出\n"); for(i=0;i<M*N;i++) { printf("%4d",(zip[i]-i*(N-1))[0]); } printf("\n\n\n以下是第二种转换一维数组之后的输出\n"); for(i=0;i<M*N;i++) { printf("%4d",zip[0][i]); } printf("\n\n\n以下是第三种转换一维数组之后的输出\n"); for(i=0;i<M*N;i++) { printf("%4d",*(zip[i]-i*(N-1))); } printf("\n\n\n以下是第四种转换一维数组之后的输出\n"); int *p=&zip[0][0]; for(i=0;i<M*N;i++) { printf("%4d",p[i]); } printf("\n\n\n...............over\n"); return 0; }