C语言数组计算的问题,达人帮忙分析下!

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:50:34
int k[]={2,4,6,8,10} *p=k+1;
求表达式 *(p+2)*p[1] 的 值为_______.
我知道*(p+2)是指 k[2]吧,那 *p[1]呢?*(p+2)*p[1]又怎么计算呢?谢谢达人咯!!

*(p+2)不是指 k[2]
因为*p=k+1,所以*p是指向K[1]的,*(p+2)就是往后再移动两位,那么就是指K[3]的,那么*(p+2)就是8了

至于表达式,你想想
如果给你两个数,不给你运算符号,你会做吗?
所以*p[1] 不是一个整体,而是乘以p[1]的意思
因为p[0]=k[1],所以p[1]=k[2]也就等于6了
所以原式的值是8*6=48

其中*(p+2)指的是k[3],因为*p=k+1 表示*p指向k[1]也就是4
也就是说p所放的地址是从k[1]开始
p即是k[1]地址 也可认为p[0]即k[1]即将p认为数组的话指向
那p[1]即k[2] k[2]对应值为6
*(p+2)*p[1] 即8*6=48