C++ 函数指针

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int PrintVal(int i){
 5     cout<<i<<endl;
 6     return 0;
 7 }
 8 
 9 int Add(int i,int j){
10     return i+j;
11 }
12 
13 void Compare(int i,int j){
14     if(i==j)
15         cout<<i<<"=="<<j<<endl;
16     else if(i>j)
17         cout<<i<<">"<<j<<endl;
18     else
19         cout<<i<<"<"<<j<<endl;
20 }
21 typedef int(*pFunc)(int);
22 
23 int main(){
24     pFunc p1 = PrintVal;
25     int (*p2)(int,int);
26     p1(7);
27     p1 = &PrintVal;
28     (*p1)(8);
29     p2 = Add;
30     cout<<p2(4,5)<<endl;
31 
32     p2 = reinterpret_cast<int(*)(int,int)>(Compare);//进行强转
33 
34     p2(4,5);
35 }

一、书写方式 type (*name)(param);ios

二、函数指针书写比较复杂,通常使用typedef来简化。函数

三、函数原型必须与定义函数指针时的原型一致,不然会致使编译错误。可是,在某些特殊状况下,能够使用reinterpret_cast运算在不一样类型的函数指针间进行转换。spa

四、有一种函数叫作“回调函数”。回调函数是一个定义了函数的原型,函数体则交由第三方来实现的一种动态应用模式。在实现函数调用时,先将回调函数的地址做为参数之一传递给主调函数。在主调函数内部经过函数指针调用回调函数。回调函数的机制打破了主调函数与被掉函数静态绑定的限制,为用户提供一种充分利用操做系统的方便手段。操作系统

相关文章
相关标签/搜索