以下程序的输出结果:main(){int a[5]={1,2,3,4,5};int *p=a; printf("a=%d",*(p+5));}不确定

输出的结果不确定这是为神马呢... 输出的结果不确定 这是为神马呢 展开
 我来答
无忧网事
2011-06-19 · TA获得超过899个赞
知道小有建树答主
回答量:676
采纳率:100%
帮助的人:323万
展开全部
因为C语言数组下标是从0开始计数的。定义数组int a[5],指定数组a有5个元素,这5个元素从a[0]到a[4]。程序中*(p+5),实际上是a[5],指向数组的第6个元素。但是数组a没有第六个元素,*(p+5)这个引用超界了。这种超界,C语言不给出任何提示。
松甜恬0Je4ba
2011-06-19 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:4140万
展开全部
因为超出了a数组的范围了,
这里*(p+5)就等同于a[5].
但是,很显然,a数组的下标最大到4,不会到5的,因为下标从0开始。
所以其值就不能确定了,也许0,也许是别的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mcti_whu
2011-06-19
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
p指向a[0]。所以p+5越界了。所以是不确定的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式