函数指针:
函数类型 (标志符指针变量名) (形参列表);
例:void (*fun)(void);
1.“函数类型”说明该函数指针指向的函数的返回类型。
2.“标志符指针变量名”为该指针的名字。
“(标志符指针变量名)”中的括号不能省,若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数。
3.“形参列表”表示该指针变量所指向的函数所带的参数列表。
例子:
void (*f)(void) = (void (*)(void))0x30000000;
(*f)();
【void (*f)(void)】申明一个名字为f的函数指针,该指针指向的函数返回值为void,该指针指向的函数的参数列表为void。
【= (void (*)(void))0x30000000;】将0x30000000地址强制转换为前面函数指针一样的类型,以实现指针赋值。
【(*f)();】执行该函数指针指向的函数,此处会认为函数地址是0x30000000,PC指针载入0x30000000。
例:
int add(int a, int b)
{
return a+b;
}
int main()
{
int (*funp)(int , int);//申明一个名为funp的函数指针,可以指向函数
funp = add;//指向add函数,函数名就是函数的首地址
funp(1,2);//执行该指针指向的函数,并传递参数1,2。 虽然没用到funp(1,2)的返回值,但是PC指针却指向了add函数的地址,执行了该函数。
//也可以int c = funp(1,2);
return 0;
}