void sum(int a[]) {a[0]=a[-1]+a[1];} main() {int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]); printf(

"%d尀n",a[2]);}
2024-12-03 23:02:10
推荐回答(1个)
回答(1):

你sum函数中数组的下表怎么可能为负数呢,下标越界会是程序崩溃,而且,你传给sun的参数&a[2],会把数组前两个丢掉,之所以程序仍然可以运行,是因为a[-1]其实是原数组的第二个【传递的数组看似越界,其实元数组没有,因为内存中的东西还在】,也就是2,a[1]是原数组的4,所以结果为6.
但是这样所貌似有点投机的意思,可以用来理解数组,但是实际做题是最好如此,