函数指针声明时的形参列表可以没有
#include <stdio.h> #include <stdlib.h> typedef void (* PF)(); void add(int a,int b,int *result) { *result=a+b; printf("result:%d\n",*result); } void main() { int x,y,z; PF pfun = add; x=5; y=4; pfun(x,y,&z); }
typedef void (* PF)(); 换成 typedef void (* PF)(int,int,...); typedef void (* PF)(,...); typedef void (* PF)(int,int,int*); 都可以
但是换成 typedef void (* PF)(...); typedef void (* PF)(int); 不可以。
说明可变形参可以采用直接不指定()或指定前几个再加省略号的形式,直接加省略号不可以,省略号前面必须有逗号。如果指定了确定个的形参,那么就必须与所指向的函数的形参一致。