以下是引用雪狼MJ在2012-6-19 22:46:15的发言:
可以把二维数组当成一个一位数组看待,代码如下:
#include <stdio.h>
int main()
{
int i, j;
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int *p;
p = &a[0][0];
for (i=0; i<12; i++){
printf("%d ", *(p+i));
}
putchar(10);
return 0;
}
但这是搞欺骗,这样明显破坏了程序的可读性。
另一种方法就是把指针变量赋值为第i行的第0个的地址,代码如下:
#include <stdio.h>
int main()
{
int i, j;
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int *p;
for (i=0; i<3;i++){
p=a;
for (j=0; j<4; j++)
{
printf("%d ", *(p+j));
}
}
return 0;
}
希望能帮到你!~
谢谢你,我昨天找到了解决办法,但是你的解释我也受益了!