函数重载问题
#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