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;
}

浙公网安备 33010602011771号