指针7(指针与二维数组)

先来道例题

#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+2
4+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(应用指针向函数传递数组)

猜你喜欢

转载自blog.csdn.net/weixin_43918004/article/details/84893496