目录
一、递归函数
1.什么是递归函数
如果一个函数的函数体中调用了该函数自身,这样的函数称为递归函数
例如:
void fun(void)
{
printf("hello world\n");
fun();
}
2.正确的递归函数需要具备以下几个条件:
>>有递推阶段(调用过程)
>>有回归阶段(返回过程)
>> 有递推终止条件
3.递归函数的使用
void fun(void)
{
static int a;
printf("hello world--->%d\n",a);
a++;
if(a < 100)
fun();
}
int main(void)
{
fun();
return 0;
}
二、变参函数
在定义函数时,函数的形参列表中,如果用 ... 表示形参,则该函数称为变参函数
在调用变参函数时,可以传递不同个数,不同类型的参数给该函数。printf就是变参函数
printf("hello\n");
printf("%d\n",123);
printf("%d,%f\n",120,4.5);
三、回调函数
1.什么是回调函数
所谓的回调函数,指的是不直接在程序中显式地调用,而是通过调用其他函数返过来调用的函数
例如:
//fun2以回调函数的形式使用
void fun2(void)
{
printf("hell world\n");
}
void fun1(void (*p)(void))
{
p();
}
int main(void)
{
fun1(fun2);
return 0;
}
四、内联函数
1.什么是内联函数
通常函数调用需要一定的时间开销。这意味着执行调用时花费了时间用于函数调用、传递参数、跳转到函数代码段并返回。
使用类函数宏的一个原因就是可减少执行时间。
C99为我们提供了另一种方法:内联函数,
通过把一个函数声明为内联类型,将建议编译器尽可能快速地调用该函数。上述建议的效果由实现来定义。
2.内联函数的定义
定义内联函数的方法是在函数声明中使用函数说明符inline。
例如:
inline int max(int i, int j)
{
return (i>j)?i:j;
}
3.使用内联函数应该注意
因为内联函数没有预留给他的单独代码块,所以无法获得内联函数的地址。
//内联函数的函数体一般不宜太复杂,不能有循环语句,执行的效率要高
//内联函数一般写在头文件中