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

输出a[2]
求解!!

第1个回答  2012-09-14
6
void sum(int* a)
{
*a = *(a-1) + * (a+1);
}
这样应该可以看懂的吧 , 数组作参数的时候,退化成指针追问

能不能详细点?

追答

当成指针来理解

追问

我们还没有学到指针。。。

追答

没学到? 那&a[2]知道是什么意思不

追问

就是a[0]=a[-1]+a[1]和sum(&a[2]) 这两个句子不懂,而且下标能用负的?

追答

还是等你们老师讲吧

&a[2] 取 a[2] 的地址 也就是指向 a[2]的指针
然后
void sum(int a[]) {a[0]=a[-1]+a[1];} //这完全是为了考试才这样写的,考你指针和数组的概念


void sum(int* a) { *a=*(a-1) + *(a+1);} 意思是一样的

本回答被提问者和网友采纳
第2个回答  2012-09-14
形参实参用同一个名?这种习惯会害死人的。
相似回答