C语言问题,求原因解!

main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%x\n",p);printf("%x\n",p+9);}int占2... main()
{int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);printf("%x\n",p+9);
}
int占2个字节,第一个printf输出194 ,第二个输出多少?
A212 B204 C1a4 D1a6
展开
 我来答
逝水南城
2013-07-21 · TA获得超过446个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:156万
展开全部
%X代表十六进制,p代表a数组的首地址

第一个printf()输出194就是说数组a的首地址是十六进制的194
p+9就是指向0的位置,a中每一个元素占用2个字节,那么从a的开始到0共占用2*9 = 18个字节18的十六进制是12,所以194 + 12 = 1a6故选D
i海上明月
2013-07-21
知道答主
回答量:6
采纳率:0%
帮助的人:5.6万
展开全部
  1. %x是输出十六进制整数

  2. *p为地址里的内容,p为地址,这道题让输出的是地址

    笨办法是把16进制开头的地址换成10进制再加,再换成16进制

    简单的是把9*2=18,换成16进制是12

    12+194=1a6 (16进制加法,1+9=a)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
201求一份安逸
2013-07-21 · 超过16用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:32.2万
展开全部
答案:D。
解释:先要明白这两个printf输出的是地址,再是第一个printf输出的194是一个十六进制的数表示十进制的404,然后要知道p+9表示p指针后的第9个位置的地址,前面有说明了int占2个字节,故只要在404的基础上加18即422,然后再转换成十六进制输出就是D的答案1a6。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2009howardhhm
2013-07-21 · 超过14用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:39.5万
展开全部
如果int占2个字节
则p+9 为p+9*2=194+18=1a6 十六进制加法 选D
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有水印的钞票
2013-07-22 · TA获得超过768个赞
知道小有建树答主
回答量:388
采纳率:0%
帮助的人:94.3万
展开全部
选D,原因楼上的各位已经讲明了,我也不啰嗦了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yunxian_19
2013-07-22 · TA获得超过317个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:187万
展开全部
恩,这题也太入门了,各位都先下手了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式