以下是引用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;
}
