函数指针
int fun(int a, int b)
{
int ret = a + b;
return ret;
}
void main()
{
//第一种调用方法
//直接通过函数名调用
int result = fun(10, 20);
int(*pfun)(int, int);//函数指针
//第二种调用方法
//标准写法,通过函数指针调用
pfun = &fun;//pfun用来保存函数的地址
result = (*pfun)(10, 20);
//第三种调用方法
pfun = fun;//函数名本身就保存着函数的入口地址
result = pfun(10, 20);
}
一种调用函数的经典式子:
(*(void(*)()0)();
把0强制转换成函数指针类型,在解引用,得到函数名,类似于第二种调用方法。