问题 填空题

以下程序的输出结果是______。
int fun(int *x,int n)
if(n==0) return x[0];
else return x[0]+fun(x+1,n-1);

main()
int a[]=1,2,3,4,5,6,7; printf("%d\n" , fun(a,3));

答案

参考答案:J

解析: 本题考查的是指针变量作为函数参数。实参a是指将数组元素1的地址传递给形参x,将3传递给形参n,应当注意一点,用数组名作函数实参时,不是把数组的值传给形参,而是把实参数组的地址传给形参数组,两个数组共用一段内存单元。当形参n=3时,if语句条件不满足,执行else语句,所以x[0]+f(x+1, n-1)=1+f(x+1,2),此时x[]={2,3,4,5,6,7},n=2,x[0]=2。第二次调用时n=2,同样执行else语句x[0]+f(x+1,n-1)=2+f(x+1,1),此时x[]={3,4,5,6,7},n=1,x[0]=3。第三次调用时n=1,同样执行else语句x[0]+f(x+1,n-1)=3+f(x+1,0)此时x[]={4,5,6,7

填空题
单项选择题