
以下程序的输出结果:main(){int a[5]={1,2,3,4,5};int *p=a; printf("a=%d",*(p+5));}不确定
3个回答
展开全部
因为C语言数组下标是从0开始计数的。定义数组int a[5],指定数组a有5个元素,这5个元素从a[0]到a[4]。程序中*(p+5),实际上是a[5],指向数组的第6个元素。但是数组a没有第六个元素,*(p+5)这个引用超界了。这种超界,C语言不给出任何提示。
展开全部
因为超出了a数组的范围了,
这里*(p+5)就等同于a[5].
但是,很显然,a数组的下标最大到4,不会到5的,因为下标从0开始。
所以其值就不能确定了,也许0,也许是别的。
这里*(p+5)就等同于a[5].
但是,很显然,a数组的下标最大到4,不会到5的,因为下标从0开始。
所以其值就不能确定了,也许0,也许是别的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p指向a[0]。所以p+5越界了。所以是不确定的结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询