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

 

posted @ 2023-11-28 17:24  TechNomad  阅读(10)  评论(0编辑  收藏  举报