int f(int);这是一个返回值为整形,参数类型为整形的函数原型。
int *f(int);首先看(int)知道这是一个参数为整形的函数,再看间接访问符*知道这是一个返回值为整形指针的函数。
int (*f)(int);第一个括号迫使间接访问在函数调用之前进行,说明这是一个指向函数的指针。就叫函数指针。
注意在使用函数指针之前要有该函数的原型。
如下:
#include "stdafx.h"
int func(int a);
void main()
{
/*int f(int);
int (*pf)(int)=&f;虽然有函数原型声明能够躲过编译器检查,但是在运行时就会失败
*/
int (*ppf)(int)=&func;
(*ppf)(4);
(*ppf)(5);
(ppf)(6); //有没有*号都无所谓,因为ppf就是一个函数指针
getchar();
}
int func(int a)
{
printf("%d\n",a);
return 0;
}
程序中的每个函数在内存中也有相应的地址(ppf就指向了func的位置),这样想的话就不难理解了。
明白了函数指针后,接下来就到回调函数了!