因为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指向a[0]。所以p+5越界了。所以是不确定的结果。