昨天在想指向函数指针数组的指针的时候,突然想知道“
指向数组指针的指针数组”
是什么样的,于是就有了今天的这篇文章。
先看代码吧:
-
#include <stdio.h>
-
-
int main(void)
-
{
-
int a[2][3] = {
-
{1, 2, 3},
-
{11, 22, 33}
-
};
-
-
int b[2][3] = {
-
{4, 5, 6},
-
{44, 55, 66}
-
};
-
-
int (*p[2])[3]; //指向数组指针的指针数组
-
-
p[0] = (int (*)[])&a;
-
p[1] = (int (*)[])&b;
-
-
printf("%d, %d\n", p[0][1][1], p[1][1][1]);
-
-
return 0;
-
}
输出结果:22,55
我们来分析一下:
假如我们现在需要一个能保存多个数组指针的指针数组,我们该怎样做?
我们都知道 int (*)[] 是一个数组指针,它可以指向一个二维数组,要是想保存多个这样的指针,我们首先要定义一个指针数组,为什么是指针数组呢?因为我们可以通过地址来找到一个数组指针,所以只需保存它们的地址就行了,然而保存多个地址需要指针数组。
在这里保存的是一个指向二维数组的数组指针,所以要声明为 int (*[])[] 的形式。 p[0]是一个数组指针,指向二维数组a,p[0][1]==a[1],p[0][1][1]==a[1][1], 下一句同理,所以输出结果为:22,55。
阅读(1855) | 评论(0) | 转发(0) |