函数重载问题
#include <stdio.h>
int fun(int x[], int k)
{
if(k==0) return (x[0]);
return x[0]+fun(x+1, k-1);
}
int main()
{
int x[ ]={1,2,3,4,5};
printf("输出结果:%d\n", fun(x,3));
getch();//窗口保留函数,调试使用
}
我们看一下程序运行的结果:
这里要涉及的知识点:
1、数组作为函数形参传递的是地址
2、数组名x代表的是是数组首元素的首地址,x+1代表数组的下一个元素
注意:(x与&x的意义不一样,&x是数组的首地址,所以&x+1代表着是指越过本数组的下一个地址,即&x + 5*sizeof(int)这时候已经超出数组范围了。)
3、运行到return函数代表着一个函数的结束
4、函数重载
最后的结果是:
fun(x,3)
=x[0]+fun(x+1,2)
=x[0]+x[1]+fun(x+2,1)
=x[0]+x[1]+x[2]+fun(x+3,0)
=x[0]+x[1]+x[2]+x[3]
=10