//决定的函数的类型应该是:函数的返回值 函数的参数列表
void func()
{
printf("hello world!");
}
//func函数名其实是代表函数的入口地址
//如何去定义一个指向函数的指针
int myfunc(int a,char b)
{
printf("int myfunc(int a,char b) !\n");
return 0;
}
void test01()
{
//1.定义函数类型,通过类型来定义函数指针
typedef int(FUN_TYPE)(int,char);
FUN_TYPE *pFunc = myfunc;pFunc(10, 'a');
(*pFunc)(20, 'b');
myfunc(30,'c');
//2. 直接定义函数指针类型
typedef int(*FUNC_P)(int, char);
FUNC_P pFunc2 = myfunc;
pFunc2(20,'d');函数指针指向同类型
pFunc2 = func;
3. 直接定义函数指针变量
int(*pFunc3)(int, char) = NULL;
pFunc3 = myfunc;
pFunc3(50,'p');}
注:
所以
typedef int(FUN_TYPE)(int,char);
可以理解为:
1. int()(int,char); //定义了一个返回值为int,形参为int,char的函数类型,没有名字
2.typedef int(FUN_TYPE)(int,char); //则表示用typedef帮这个函数类型起了一个名字,叫:FUN_TYPE
3.FUN_TYPE * pFunc = myFunc; //定义了一个FUN_TYPE* 类型的的指针变量pFunc,pFunc指向了函数myFunc
4.函数指针与被指向的函数返回值和形参必须一致