int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12} , (*prt)[3]=a, *p=a[0] ; 后两句是什么意思

行指针指向2维数组的a【0】【0】??*p指向a【0】?? a【0】具体是哪个

(*prt)[3]=a指的是(*prt)+3的这块指针指向2维数组a的首地址,prt应该是个2维指针。
*p=a[0]指的是大小为3的第二维数组的首地址。
如果不对指针做加法运算的话,不用计较它真正指向几维数组,他们指向的都是a、a[0]、a[0][0]的地址。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-24
(*prt)[3]=a,指向数组a,a[0][0],a[0][1],a[0][2]....,a[3][2],指针确实很麻烦..
*p=a[0] ;p指向a[0][0],a[0][1],a[0][2]
验证程序如下:
#include<stdio.h>
void main()
{int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12} , (*prt)[3]=a, *p=a[0] ;
int i;
printf("%d\n",*p);
//printf("%d\n",*prt);这样写是错误的,因为prt是指向一个含3个元素的数组的
//*prt的值是a[0]数组的首地址,&a[0][0],才指向a[0][0];
printf("%d\n",**prt);
for (i=0;i<3;i++)
printf("%d ",*(*prt+i));
printf("%d\n",**(prt+3));

}
第2个回答  2011-04-25
嗯 为数组下标是从0开始的,所以不可能出现4 最后是a[3][2]
1 2 3
4 5 6
7 8 9
10 11 12
对应的数组下标:
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
a[2][0] a[2][1] a[2][2]
a[3][0] a[3][1] a[3][2]
第3个回答  2011-04-24
a[0]指的是a[0][0]也就是1
第4个回答  2011-04-24
a[0][0], a[0][1], a[0][2], a[0][3]