函数指针
1. 定义
每一个函数都占用一段内存单元,它们有一个起始地址,指向函数入口地址的指针称为函数指针。
注意:函数指针的本质是一个指针变量,且指针指向的函数的入口地址
2. 语法
指向函数的指针变量的一般定义形式为:
数据类型 (*指针变量名) (参数表);
3. 说明
- 函数指针定义形式中的数据类型是指函数的返回值的类型。
- 区分下面两个语句:
- 函数指针指向的变量不是固定的某一个函数的,只是定义了一个变量专门用来存放函数的入口地址的;在程序中把哪一个函数的地址赋给它,它就指向哪一个函数。
- 在给函数指针变量赋值时,只需给出函数名,而不必给出参数。
- 在一个程序中,指针变量p可以先后指向不同的函数,但一个函数不能赋给一个不一致的函数指针(即不能让一个函数指针指向与其类型不一致的函数)。
- 函数指针只能指向函数的入口处,而不可能指向函数中间的某一条指令。不能用*(p+1)来表示函数的下一条指令。
- 函数指针变量常用的用途之一是把指针作为参数传递到其他函数。
4. 举例
源代码:
#include <iostream> #include <conio.h> using namespace std; int max(int x, int y); //求最大数 int min(int x, int y); //求最小数 int add(int x, int y); //求和 void process(int i, int j, int (*p)(int a, int b)); //应用函数指针 int main() { int x, y; cin>>x>>y; cout<<"Max is: "; process(x, y, max); cout<<"Min is: "; process(x, y, min); cout<<"Add is: "; process(x, y, add); getch(); return 0; } int max(int x, int y) { return x > y ? x : y; } int min(int x, int y) { return x > y ? y : x; } int add(int x, int y) { return x + y; } void process(int i, int j, int (*p)(int a, int b)) { cout<<p(i, j)<<endl; }函数指针类型
通过typedef定义函数指针类型
int max(int x, int y) { return x > y ? x : y; } //定义函数指针类型 typedef int(*pFun)(int, int) int main() { //通过函数指针类型定义函数指针 pFun fun = &max; fun(1,2); return 0; } 标签:函数,指向,int,max,类型,函数指针,指针 From: https://www.cnblogs.com/lidabo/p/16874736.html