#include<stdio.h>
int main()
{
int a[3][5];
int(*p)[5];
p = a;
int i = 0, j = 0, tmp = 1;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 5; j++)
a[i][j] = tmp++;
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 5; j++)
printf("%d ",p[i][j]);
printf("\n");
}
printf("\n");
printf("%d\n",*(*(p + 2) + 4));
while (1);
return 0;
}
这里以用指针取出2行4列元素(也就是15)为例
首先定义一个二维数组指针, int (*p)[5]; (指向一个以5为步长的二维数组)注意:此处的P实际上是一个二级指针。
p+2将指针移动到第二行,代表第二行首地址。(p+2)表示第二行首元素的地址,变成了一级指针。(p+2)+4又将指针移动到了第二行第四个元素,最后((p+2)+4)将元素取出。