函数指针本质是一个指针变量,只不过这个指针指向一个函数。函数指针即指向函数的指针。我们知道所有的函数最终的编译都生成代码段,每个函数的都只是代码段中一部分而已,在每个函数在代码段中都有其调用的起始地址与结束地址,因此我们可以用指针变量指向函数的在代码段中的起始地址。
C++
#include <iostream>
using namespace std;
int fun1(int tmp1, int tmp2)
{
return tmp1 * tmp2;
}
int fun2(int tmp1, int tmp2)
{
return tmp1 / tmp2;
}
int main()
{
int (*fun)(int x, int y);
fun = fun1; // ok
fun = &fun1; // ok 两种写法均可以
cout << fun(15, 5) << endl;
fun = fun2;
cout << fun(15, 5) << endl;
cout<<sizeof(fun1)<<endl; // error
cout<<sizeof(&fun1)<<endl;
return 0;
}
/*
运行结果:
75
3
*/
需要注意的是,对于 fun1 和 &fun1:
阅读量:544
点赞量:0
收藏量:0