gpt4 book ai didi

c - 在 C 中如何将函数作为参数传递?

转载 作者:行者123 更新时间:2023-11-30 16:12:15 28 4
gpt4 key购买 nike

我想创建一个函数,该函数对一组数据执行通过参数传递的函数。在 C 中如何将函数作为参数传递?

最佳答案

声明

采用函数参数的函数原型(prototype)如下所示:

void func ( void (*f)(int) );

这表明参数f将是一个指向函数的指针,该函数具有void返回类型并且采用单个int参数。以下函数 (print) 是可以作为参数传递给 func 的函数示例,因为它是正确的类型:

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

函数调用

当使用函数参数调用函数时,传递的值必须是指向函数的指针。为此使用函数名称(不带括号):

func(print);

将调用func,将打印函数传递给它。

函数体

与任何参数一样,func 现在可以在函数体中使用参数的名称来访问参数的值。假设 func 将应用传递给数字 0-4 的函数。首先考虑一下直接调用 print 的循环会是什么样子:

for ( int ctr = 0 ; ctr < 5 ; ctr++ ) {
print(ctr);
}

由于 func 的参数声明表示 f 是指向所需函数的指针的名称,我们首先回想一下,如果 f是一个指针,那么 *f 就是 f 指向的东西(即本例中的函数 print)。因此,只需将上面循环中出现的每个 print 替换为 *f:

void func ( void (*f)(int) ) {
for ( int ctr = 0 ; ctr < 5 ; ctr++ ) {
(*f)(ctr);
}
}

Source

关于c - 在 C 中如何将函数作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58372121/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com