C/C++常见函数指针的用法
一、函数指针的写法
void (*pFunc)(int) 返回值类型 + (指针变量名)(形参列表)
二、函数指针的定义方式
1.先定义函数的原型
#include <stdio.h> #include <stdlib.h> #include <string.h> //先定义出函数的类型,再通过类型定义函数指针变量 //定义一个函数类型,返回值是void,形参列表(int, int); typedef void(FUNC_TYPE)(int, int); void func(int a, int b) { printf("a + b = %d\n", a + b); } int main() { FUNC_TYPE *pFunc = func; pFunc(10, 20); return 1; }
2.先定义函数指针的类型
#include <stdio.h> #include <stdlib.h> #include <string.h> //先定义出函数指针的类型,再通过类型定义函数指针变量 //定义一个函数类型,返回值是void,形参列表(int, int); typedef void(*FUNC_TYPE)(int, int); void func(int a, int b) { printf("a + b = %d\n", a + b); } int main() { FUNC_TYPE pFunc = func; pFunc(10, 20); return 1; }
3.直接定义函数指针
int main() { //直接定义函数指针变量 void(*p)(int, int) = func; p(10, 20); return 1; }
4.定义函数指针数组
#include <stdio.h> #include <stdlib.h> #include <string.h> //函数指针数组 void func1() { printf("func1\n"); } void func2() { printf("func2\n"); } void func3() { printf("func3\n"); } void func4() { printf("func4\n"); } int main() { //函数指针数组定义方式 void(*func_array[4])(); func_array[0] = func1; func_array[1] = func2; func_array[2] = func3; func_array[3] = func4; for (size_t i = 0; i < 4; i++) { func_array[i](); } return 1; }
三、在C++中使用函数指针
#include <iostream> typedef int (*PTRUN)(int, int); class MyTest { public: MyTest() {}; ~MyTest() {}; public: static int Add(int a, int b); }; int MyTest::Add(int a, int b) { return (a + b); } int main() { PTRUN pFun = MyTest::Add; std::cout << (*pFun)(3, 2) << std::endl; return 0; }