二维数组很常见,现在就一些用法做简单的总结:
①二维数组在内存中是顺序存放的,我们知道一维数组可以用一个一维指针来指向它,由于顺序存放的特点,也可以用一个一维指针指向二维数组,见下面的程序
②可以用指向一维数组的指针来指向二维数组,其用法就和用这个数组一样,见下面的程序:
- #include <stdio.h>
- int main()
- {
- int B[2][4]={1,2,3,4,5,6,7,8};
- int *q,(*p)[4];
- int i,j;
- q=B;
- for (i=0;i<8;i++)
- {
- printf("%d/n",q[i]);
- }
- 前半部分是用一维指针来指向它
- p=B;
- for(i=0;i<2;i++)
- for (j=0;j<4;j++)
- {
- p[i][j]+=1;
- }
- for(i=0;i<2;i++)
- for (j=0;j<4;j++)
- {
- printf("%d/n",B[i][j]);
- }
- ///上面部分是用一个指向一维数组的指针直接指向,效果和数组本身差不多
- }
PS:B[0],B[1]表示是0,1行的数组名,可以作为地址,传递给一个一维指针,于是便可以指向这一行。
int *p;
p=B[0];
则,p[2]就表示B[0][2];