C语言问题 求解释

设有定义:int a[2][2]={1,2,3,4},(*p)[2];,则在语句p=a;p++;后,**p的值为( )。

3, 原因:(*p)[2],说明p是一个指向数组长度为2的指针,
a[2][2] =
{ 1, 2
3, 4};
p = a, ——> p 指向 {1,2}
p++ ——> p指向{3,4}
**p ——>将p指向地址的内容取出,得到3
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-02
#include<stdio.h>

void main()
{
int a[2][2]={1,2,3,4},(*p)[2];
p=a; p++;
printf("%d\n",**p);
}
//程序运行结果为3
第2个回答  2011-10-02
3
第3个回答  2011-10-02
**p=3,其实这里(*p)[2]可以看成是一个二维数组,执行语句p=a;p++;后将相当于将a[2][0]的首地址付给p,所以这里求得的**p为3。