关于指针问题

关于指针问题第八题,为什么A不对,D对呢... 关于指针问题第八题,为什么A不对,D对呢 展开
 我来答
日名字全被注册
2018-06-06 · TA获得超过482个赞
知道小有建树答主
回答量:787
采纳率:68%
帮助的人:172万
展开全部
因为p是指针(不知道你能不能从底层理解指针是什么),不能直接操作它。
指针的实质,是一个内存地址,是寄存器寻址甚至其相对寻址的高级语言实现。但为了保护操作系统或其它软件,所以编译器不会让你直接操作它。只能用该程序申请的其它指针来替换它。ABC里都是一个用户输入,如果把这个值赋给指针,就会出现可能把这个地址改到其它程序,甚至操作系统内核的内存地址上,而且还不限于那个地址上是指令或是数据 。
A不对,是编译器不让。当然,汇编上看起来没有任何毛病 mov ax,100 然后[ax]寄存器寻址。B那里是一样的,变成了mov ax, [a的地址+5],但这些操作都是非法的。
追问
那D怎么就对了呢,好奇怪
追答
因为a是一个指针啊,是一个地址,而且它的空间是10,所以a+2也不会越界。
瓮能佟若兰
2020-11-08 · TA获得超过1150个赞
知道小有建树答主
回答量:1999
采纳率:100%
帮助的人:9.4万
展开全部
其实传递指针就相当于别人给钥匙给你,你复制一份,虽然你改变不了原来的钥匙,但是你可以通过复制出来的钥匙打开原来钥匙可以开的门,这里p就相当于钥匙,p可以操作它指向的内存,但是更改不了传递给它值的那个参数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式