- 一、什么是函数指针
- 二、用函数指针接收函数的地址
- 三、指针调用函数
- 四、什么是回调函数
一、什么是函数指针
首先,在C++中,函数名=函数地址。如代码所示:
#includeusing namespace std; int add(int a, int b); int main() { cout << add << endl; } int add(int a, int b) { return a + b; }
输出结果:003912CB
二、用函数指针接收函数的地址代码如下(示例):
#includeusing namespace std; int add(int a, int b); int (*p)(int a, int b);//函数指针定义 int main() { cout << add << endl; p = add; //指针接受函数的地址 cout << p << endl; } int add(int a, int b) { return a + b; }
输出结果:
00D112CB
00D112CB
代码如下(示例):
#includeusing namespace std; int add(int a, int b); int (*p)(int a, int b);//函数指针定义 int main() { p = add; cout << add(3, 5) << endl; cout << p(3, 5) << endl; } int add(int a, int b) { return a + b; }
输出结果:
8
8
四、什么是回调函数
函数可作为形参传入另一个函数,即通过函数调用另一个函数。
通过fuc函数调用add函数,代码如下:
#includeusing namespace std; int add(int a, int b); int fuc(int (*p)(int a, int b),int x,int y);//函数指针作为形参,接收传递进来的函数 int main() { cout << add(3, 5) << endl; cout << fuc(add,3,5) << endl; } int add(int a, int b) { return a + b; } int fuc(int (*p)(int a, int b), int x, int y) { return p(x,y); }
注意的是:函数指针接受的函数地址要满足:返回值与形参一致。
错误代码:
#includeusing namespace std; int add(int a, int b); string (*p)(int a, int b); int main() { p = add; } int add(int a, int b) { return a + b; }
此时,由于add函数返回值与指针返回值类型不一,代码错误。



