先来道例题
#include<stdio.h>
int main()
{int a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}};
int *p,i,j;
p=&a[0][0];
printf("\n");
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
{printf("%4d",*p++);
}
printf("\n");
}
return 0;
}
运行结果
对于m行n列的二维数组a[m][n],其数组元素a[i][j]在数组中相对位置的计算公式为:
in+j
例如上体中a[2][3]的地址为p+24+3,即p+11,所以a[2][3]就可以表示为*(p+11)
楼主感觉用指针表示二维数组的位置好麻烦。。。
下一道例题
题目:应用指针变量,输出二维数组a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}中任一元素
代码如下
#include<stdio.h>
int main()
{int a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}};
int *p,i,j;
p=&a[0][0];
printf("\nInput i and j:");//i代表行,j代表列
scanf("%d%d",&i,&j);
printf("a[%d][%d]=%d\n",i,j,*(p+(i-1)*4)+(j-1));
return 0;
}
运行结果
下一篇 指针8(应用指针向函数传递数组)