中易网

求高手分析下面这个程序,(*p)[4]=a是什么意思,然后k+=*(*(p+i)+j);又该如何理解

答案:2  悬赏:10  
解决时间 2021-03-02 18:50
#include
void 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);
}
最佳答案
p是数组指针,(*p)[4]=a,p即是指向一个数组的指针,初始值为a,即a数组的首地址;
k+=*(*(p+i)+j);
以i=0;j从0到2为例:
因为p为数组指针,所以*p即为4个int型的数组,*p+1不是单纯的加1,而是加数组长度,(将数组看做复合数据类型在此比较好理解),现在指向a[][1]
综合来看,即看出功能是对二维数组的各个元素的值相加
全部回答
int (*p)[4];定义了p的类型为指向长度为4的int型数组的指针(是指向数组首地址的指针,相当于二维指针)。 如果说a为定义一个3行4列的矩阵,那么p就是指向每一个行向量(长度为4)的指针。 *(*(p+i)+j)是对p指针的二重内容读取,即,先取出(p+i)第i行,再取出(*(p+i)+j第i行的第j列 与k累加
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
呼伦贝尔乌珠牛录家庭牧场地址有知道的么?有
be of great interest中的of 能省略吗
mini cooper2015款1.2t one怎么样
成都市振中驾校白家基地招生部在什么地方啊,
如何在家可以练习踩好离合的方法
camaro是轿跑还是跑车
北京富力广场购物中心西北门在哪里啊,我有事
关于辩论会
请问容桂申通快递真的倒闭了吗
森林王鞋业地址在哪,我要去那里办事
苹果可以开两个微信么
九个点,怎么用三条线连成?
日韩20岁以下美女明星
恨那些亲戚,都不来往了,还那么讨厌
西方节日何时进入中国
推荐资讯
先科网路机顶盒停服升级
lol突然fps变的很低这么调都是.声音还卡卡的
兰州一绝地址在哪,我要去那里办事
翻译:And I don't know if I can belie
钱塘村我想知道这个在什么地方
那请问么么哒这句话什么意思啊?。
21岁的人晚上睡几个小时好?
潜山县工商局综合楼地址在哪,我要去那里办事
我们公司想办理社保 公司公司注册地址为昌平
山西雷风律师事务所我想知道这个在什么地方
3DS的马里奥3D大陆白色浣熊装出现条件?
为什么从两极看地球自转是北逆南顺?是视觉角
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?