函数类型

来源:互联网 发布:电脑打字用什么软件 编辑:程序博客网 时间:2024/06/06 14:07

函数名是执行函数体的入口地址
typedef int (FUNC)(int);
int test(int i)
{
return i*i;
}
FUNC* pt = test;
pt(2)和(*pt)(2)是一样的,但是pt必须是函数指针类型,不能是FUNC pt = test;因为函数名是函数体的入口地址

通过函数指针可以在c程序中实现固定地址跳转

回调函数是利用函数指针实现的一种调用机制

函数参数在本质上与局部变量相同在栈上分配空间
函数的实参并没有固定的计算次序,函数参数的计算次序是依赖于编译器实现的

C语言可以定义参数可变的函数
参数可变函数的实现依赖于stdarg.h头文件
- va_list:参数集合
- va_arg:取具体参数值
- va_start:标示参数访问的开始
- va_end:标示参数访问的结束

float average(int n, ...){    va_list args;    int i = 0;    float sum = 0;    va_start(args, n);    for(i=0; i<n; i++)    {        sum += va_arg(args, int);    }    va_end(args);    return sum / n;}

可变参数必须顺序的访问,无法直接访问中间的参数值

多次使用宏会导致最终可执行程序的体积增大
函数是跳转执行的,内存中只有一份函数体存在