int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12} , (*prt)[3]=a, *p=a[0] ; 后两句是什么意思
5个回答
展开全部
(*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));
}
*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));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嗯 为数组下标是从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]
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]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[0]指的是a[0][0]也就是1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[0][0], a[0][1], a[0][2], a[0][3]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询