2-9选择题

2-9选择题


求这道题每个答案的解析
在VS2017编译出来结果不对……

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕查理 2018-01-31 10:03:34

您好,题目要求1输出b的值也就是9,2输出a的值也就是8,因此答案为1处:*(p-1)   2处:*++q。解析:因为a和b的值相邻。p指针的地址为a,那减1操作之后的指针地址应是b,即值为9。q的指针地址为b,那加1操作之后的指针地址应该是a,即值为8。

#include<iostream>
using namespace std;
int main()
{
int a = 8,b = 9 ;
int *p,*q;
p = &a;
q = &b;
cout<<*(p-1)<<endl;
cout<<*++q<<endl;
return 0;
}

祝学习愉快!

  • 提问者 Tolkiem #1
    为什么指向a指针的地址在指向b指针的地址的后面
    2018-01-31 13:21:37
  • 好帮手慕查理 回复 提问者 Tolkiem #2
    您好,变量存储位置并不是一定的,如果编译器找到了连续的存储块,那我们定义的变量就可能会连续存储,具体哪个变量在前哪个在后并不绝对,这是编译器自身机制决定的,该题其实是在两个变量存储空间连续的前提下来完成的。该题目存在歧义,给您理解造成的不便敬请谅解,我们已及时修订,祝学习愉快。
    2018-01-31 15:04:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++零基础入门 热门编程语言 二级考试必备
  • 参与学习       529    人
  • 提交作业       110    份
  • 解答问题       594    个

无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师