gpt4 book ai didi

c - 传递带有参数的函数作为参数

转载 作者:太空狗 更新时间:2023-10-29 16:12:31 24 4
gpt4 key购买 nike

我想将带有参数的函数作为参数传递给其他函数,但我不知道如何(或是否)可以做到这一点。

我想做的是:

#include <stdio.h>

void getInput(char* request, int (*func)());

int main()
{
double input;
getInput("Input: ", scanf("%lf", &input));
}

void getInput(char* request, int (*func)())
{
// do stuff
func()
// do more stuff
}

不幸的是,这不起作用。当我试图将它作为参数传递时,我认为 scanf 正在执行。我如何让它在 getInput 中运行?

最佳答案

你不能在 C 中这样做,该语言不支持这样的结构。

您通常可以再次使用可变参数函数来解决这类问题:

void getInput(const char *request, const char *fmt, ...)
{
va_list args;
printf("%s: ", request);
fflush(stdout);
va_start(fmt, args);
vscanf(fmt, args);
va_end(args);
}

用法是这样的:

int main(void)
{
double input;
getInput("Input", "%lf", &input);
return 0;
}

当然,您可能希望添加适当的返回值处理,否则无法知道嵌入的 vscanf() 是否成功,因此变量可以使用。

关于c - 传递带有参数的函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22568307/

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