如:
有一函数
void fun(void);//这是fun函数的声明
fun(){};//这是fun函数的调用
fun;//当只是函数的名字的时候就代表着函数入口的地址
这样,我们可以通过定义一个指针,然后使这个指针指向函数的入口,这样,我么就可以间接调用函数了。
具体例子
1 int main()
2 {void (*p)(int n);//声明函数指针的时候,参数的个数和类型必须和被指向的函数相同
3 void fun(int a);
4 p=fun;//指针p指向fun,fun是地址,正确
5 (*p)(0);//通过指针调用函数,与p();等价其中0是作为函数的参数
6 return 0;}
7
8 void fun(int a)
9 {
10
11 //TODO
12
13 }
14
2 {void (*p)(int n);//声明函数指针的时候,参数的个数和类型必须和被指向的函数相同
3 void fun(int a);
4 p=fun;//指针p指向fun,fun是地址,正确
5 (*p)(0);//通过指针调用函数,与p();等价其中0是作为函数的参数
6 return 0;}
7
8 void fun(int a)
9 {
10
11 //TODO
12
13 }
14
因为函数的调用是需要一定的开销的,当一个函数经常被调用的时候,如果函数只有几行,这样我们可以通过inline函数来解决函数调用开销的问题。
但是如果函数有很多行且经常调用,那么,我们可以通过函数指针来解决函数调用开销的问题