
C语言 main() {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i,j,k=0;
main(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i,j,k=0;for(i=0;i<3;i++)...
main()
{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++) k+=*(*(p+i)+j);
printf("%d\n",k);
}
程序输出结果
详细说明 展开
{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++) k+=*(*(p+i)+j);
printf("%d\n",k);
}
程序输出结果
详细说明 展开
4个回答
展开全部
先说说i,j的值
i=0.j=0
i=0,j=1
i=1,j=0
i=1,j=1
第一组:
k=k+*(*(p+i)+j)
第二组:
k=k+*(*(p+i)+j) 注意k的值已变化
第三组:
k=k+*(*(p+i)+j) 注意k的值已变化
第四组:
k=k+*(*(p+i)+j) 注意k的值已变化
一时忘记怎么算(*p)[4]=a,i,j,k=0; 这个了
套用一下就可以了
i=0.j=0
i=0,j=1
i=1,j=0
i=1,j=1
第一组:
k=k+*(*(p+i)+j)
第二组:
k=k+*(*(p+i)+j) 注意k的值已变化
第三组:
k=k+*(*(p+i)+j) 注意k的值已变化
第四组:
k=k+*(*(p+i)+j) 注意k的值已变化
一时忘记怎么算(*p)[4]=a,i,j,k=0; 这个了
套用一下就可以了
展开全部
定义的是一个二维数组,(*p)[4]=a表示将这个二维数组的首地址即&a[0][0]赋给(*p)[4],初始化时这里(*p)其实相当于&a[0],若*(p+i)则相当于a[i]
*(*(p+i)+ j)就相当于a[i][j],两个for循环就是执行1+3+9+11+17+19=60
*(*(p+i)+ j)就相当于a[i][j],两个for循环就是执行1+3+9+11+17+19=60
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果:60
p是一个指向一维数组的指针,循环的作用是将二维数组
1 3 5 7
9 11 13 15
17 19 21 23
的前两列累加
p+i是对行进行移动,每次移动4个int的存储空间
*(p+i)+j是对列进行移动,每次移动1个int的存储空间
*(*(p+i)+j)就相当于a[i][j]
p是一个指向一维数组的指针,循环的作用是将二维数组
1 3 5 7
9 11 13 15
17 19 21 23
的前两列累加
p+i是对行进行移动,每次移动4个int的存储空间
*(p+i)+j是对列进行移动,每次移动1个int的存储空间
*(*(p+i)+j)就相当于a[i][j]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询