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

输出的结果不确定 这是为神马呢
2025-02-28 04:44:07
推荐回答(3个)
回答1:

因为C语言数组下标是从0开始计数的。定义数组int a[5],指定数组a有5个元素,这5个元素从a[0]到a[4]。程序中*(p+5),实际上是a[5],指向数组的第6个元素。但是数组a没有第六个元素,*(p+5)这个引用超界了。这种超界,C语言不给出任何提示。

回答2:

因为超出了a数组的范围了,
这里*(p+5)就等同于a[5].
但是,很显然,a数组的下标最大到4,不会到5的,因为下标从0开始。
所以其值就不能确定了,也许0,也许是别的。

回答3:

p指向a[0]。所以p+5越界了。所以是不确定的结果。