int k,a[10],*p1=*p2=a;以下语句不正确的是A.k=*p1+p2

intk,a[10],*p1=*p2=a;以下语句不正确的是A.k=*p1+p2B.k=*p1*(*p2)C.p2=kD.p1=p2怎么做,求解释... int k,a[10],*p1=*p2=a;以下语句不正确的是A.k=*p1+p2 B.k=*p1*(*p2) C.p2=k D.p1=p2 怎么做,求解释 展开
 我来答
自我编程
2018-01-02 · 科技优质答主
自我编程
采纳数:1481 获赞数:4284

向TA提问 私信TA
展开全部
int k,a[10],*p1=*p2=a
定义的一个无初值的k 定义了一个10个元素的整型数组a,定义了2个指针p1,p2分别指向a数组首地址
A. k=*p1+p2 右边相当于指针p2+数值 也就是p2指向的地址偏移 返回的还是地址。把地址赋值给整型变量 报错
B.k=*p1*(*p2) 右边*p1 *p2都是指向地址的值 相当于 数值*数值 返回还是数值,所以赋值成立
C.p2=k 指针本身其实也是变量,只不过指针里存储的数值代表的是地址。而这里把k的值赋值给了p2, 这样不报错,但p2里的值就不是有效的地址,p2也就失去指针的意义
D.p1=p2 都是指针,没问题
所以选A
追问
可答案是C啊
A我打错了,是k=*p1+*p2.
NE_Z
2018-01-02 · TA获得超过1737个赞
知道小有建树答主
回答量:1687
采纳率:55%
帮助的人:592万
展开全部
看谁都对,哈哈,p2应该能加*p1吧,最后得出a[*p1]的地址,取值有可能越界而已。
c的语句也可以通过吧,随便赋值给p2一个地址,有可能出现该内存不能为read或write的错误,但语句应该可以这么用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式