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/05/07 03:55:02

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]);}
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]);
}

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