20悬赏!!在线等!若有以下定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的是( ) 20

若有以下定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的是(B)A、p+=2;*(p++);B、p+=2;*++p;C、p+=3;*... 若有以下定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的是( B)
A、p+=2;*(p++);B、p+=2;*++p;
C、p+=3;*p++;D、p+=2;++*p;
求解释一下B选项中的*++p为什么也等于3?
p的初始值为0,++p变为1,p代表数组a的下标,那再取指针是什么意思?
展开
 我来答
syynupt
推荐于2018-02-27
知道答主
回答量:11
采纳率:0%
帮助的人:1.5万
展开全部
*p=a,数组名表示地址,该句话的意思就是p=&a[0],p+=2表示p=&a[2];
接下来我们看看* ++的优先级,两个优先级是一样的,属于右结合。*(p++)首先计算p++,由于++在后面,所以*(P++)相当于计算*p,然后p++;所以A和C相同,至于D ++*p表示++(*p),将*p的值++。我不知道楼主用的什么编译器。对于我的理解,如果是printf(“%d”,*(p++))这种样式输出的话,A 输出是3,B输出是4,C输出的是4,D输出是4
匿名用户
2019-01-30
展开全部

应该是A,*(p++)和*p++是一样的,都是先算p++【为p】然后算* 符【为*p=3】最后p自加

这是* 和++的右结合性。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式