📜  回调 c++ - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:37:13.457000             🧑  作者: Mango

回调 c++ - C 编程语言介绍

简介

回调是一种常见的编程技术,允许将函数作为参数传递给另一个函数,并在需要时被调用。C++ 和 C 编程语言都支持回调函数。

回调函数的定义

回调函数是指在函数调用时通过参数传递的函数。回调函数通常是指一个函数指针,通过该指针可以调用传递的函数。

在 C++ 中,回调函数通常是一个函数对象或类成员函数,可以通过 std::function 类型传递。在 C 语言中,回调函数是一个函数指针,可以通过函数指针变量来传递。

回调函数的使用

下面是一个简单的 C++ 示例代码。

#include <iostream>
#include <functional>

void print(int x, std::function<int(int)> callback) {
    std::cout << "print: " << x << ", callback: " << callback(x) << std::endl;
}

int add(int x) {
    return x + 1;
}

int main() {
    print(1, add);
    return 0;
}

在上面的代码中,print 函数为一个回调函数,接受两个参数。第一个参数 x 是需要打印的整数,第二个参数是一个函数类型的参数 callback。其中 std::function 是 C++11 中新的函数类型,可以接受任何可以调用的对象,包括函数指针、函数对象和 lambda 表达式。在本例中,callback 参数的类型是 std::function<int(int)>,表示它是一个接受 int 类型参数并且返回 int 类型值的函数类型。

print 函数内部,调用了 callback(x) 函数,将 x 作为参数传递给该函数,并将返回值输出到终端。

main 函数中,调用 print 函数,并将参数 1add 函数作为参数传递。add 函数在本例中作为回调函数,可以在 print 函数内部被调用并返回期望的值。

对于 C 语言,可以使用下面的代码实现相同的功能。

#include <stdio.h>

typedef int (*callback_t)(int);

void print(int x, callback_t callback) {
    printf("print: %d, callback: %d\n", x, callback(x));
}

int add(int x) {
    return x + 1;
}

int main() {
    print(1, add);
    return 0;
}

在上面的代码中,callback_t 是一个函数指针类型,接受 int 类型参数并且返回 int 类型值。在 print 函数中,callback 参数是一个函数指针变量,可以接受指针参数并返回相应的值。

main 函数中,调用 print 函数,并将参数 1add 函数作为参数传递。add 函数在本例中作为回调函数,可以在 print 函数内部被调用并返回期望的值。

总结

回调是一种常见的编程技术,可以在需要时动态地调用函数。C++ 和 C 编程语言都支持回调函数,可以通过函数指针或函数对象来传递。在 C++ 中,可以使用 std::function 类型传递回调函数,而在 C 语言中,则需要使用函数指针。