函数指针的形式:
形式1:返回类型(*函数名)(参数表)
char(*PTRFun)(int);
char glFun(int a){
a=a+2;
printf("a=%d",a);
return 0;
}
void main(){
PTRFun=glFun;
(*PTRFun)(2);
}
结果为4
也可以用typedef 来定义
而typedef可以让函数指针更直观方便
形式2:typedef 返回类型(*新类型)(参数表)
typedef char(*PTRFun)(int);//就是定义了一种PTRFUN的类型,
并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型
char glFun(int a){
a=a+2;
printf("a=%d",a);
return 0;
}
void main(){
PTRFun fun;
fun=glFun;
(*fun)(2);
}
结果为4
typedef 和 #define 很类似。区别是:typedef 是在编译过程中被解析的,而 #define 是在编译之前的预处理时被解析的; #define 只是对所定义的别名的简单替换,而 typedef 则要灵活的多。总的来说 typedef 可以做到 #define 能做到的所有事情,而且可以做得更好。