有以下程序: main( ) { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2; printf("%d\n",*p+*q); }

有以下程序:main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2;printf("%d\n",*p+*q);}程序... 有以下程序: main( ) { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2; printf("%d\n",*p+*q); } 程序运行后的输出结果是 ( )。
A 16 B 10 C 8 D 6
求仔细解答、初涉C程序,对指针不是很理解、、望大神耐心帮助
展开
 我来答
匿名用户
2020-02-06
展开全部

emmm,一楼的回答是对的。楼主看一下*q=p-2,你是不是把这个条件抄错了?习题上是不是*q=p+2

①*p=&a[3],所以*p=4(这个不解释了)

②A我们明确一个概念,就是a[10]这串位置是连续的。

   B假设i=*p(i为p所指的单元格的值)。*p=4,即i=&a[3]=4

   Cp-2即p所在的地址往前推2单元格;即i所指的值往前推2单元格,即i=&a[3]往前推2单元格,即&a[1]=2

综上所述4+2=6

至娛与至樂
推荐于2018-05-11 · TA获得超过8084个赞
知道大有可为答主
回答量:4517
采纳率:88%
帮助的人:1023万
展开全部
main( )
{
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2;
//*p=&a[3]把a中的3索引号地址给指针p,3索引号处为4,因为索引是从0算起
//*q=p-2把p的地址减2个int位,即1处的索引号地址给指针q,1处的索引号处的值为2
printf("%d\n",*p+*q);
//*p+*q的值,是索引3处的值(4)加上索引1处的值(2),等于6。
}
答案为6或为D,
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式