C++——函数指针

在C++中,函数指针是指向函数的指针变量。它允许将函数作为参数传递给其他函数、动态选择调用的函数以及在运行时改变函数的行为。

函数指针的声明和使用如下所示:

1.声明函数指针类型:

returnType (*pointerName)(parameterTypes)

其中,returnType 是函数返回类型,pointerName 是函数指针变量的名称,parameterTypes 是函数的参数类型。

2.初始化函数指针

pointerName = &functionName;

将函数名赋值给函数指针变量,可以使用取址运算符 & 获取函数的地址。

3.使用函数指针

(*pointerName)(arguments);

使用括号将函数指针变量括起来,再加上参数列表来调用函数。

以下是一个简单的示例,演示函数指针的使用:

#include <iostream>

// 声明函数指针类型
typedef void (*PrintFunction)(const std::string&);

// 函数1
void printToConsole(const std::string& message) {
    std::cout << "Console: " << message << std::endl;
}

// 函数2
void printToError(const std::string& message) {
    std::cerr << "Error: " << message << std::endl;
}

int main() {
    // 声明函数指针变量
    PrintFunction printFunc;

    // 初始化函数指针
    printFunc = &printToConsole;

    // 使用函数指针调用函数1
    (*printFunc)("Hello, World!");

    // 改变函数指针的指向
    printFunc = &printToError;

    // 使用函数指针调用函数2
    (*printFunc)("Something went wrong!");

    return 0;
}

在上面的示例中,我们声明了一个函数指针类型 PrintFunction,它接受一个 const std::string& 类型的参数并返回 void。然后定义了两个函数 printToConsoleprintToError,它们与函数指针类型匹配。在 main 函数中,我们先将函数指针 printFunc 初始化为指向 printToConsole 函数,然后通过函数指针调用函数1。接着,我们改变函数指针的指向,使其指向 printToError 函数,并通过函数指针调用函数2。