传递带有变量参数的函数作为void指针,并调用它

Gau*_*rav 5 c pointers

我有一个功能,我想通过各种功能

int func1(char *ptr)
{
    printf("%s",ptr);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和其他我想调用func1的函数

int func2(void *i)
{
    //call i
    //here i point to function func1
    //and do something with return value of i
}
Run Code Online (Sandbox Code Playgroud)

那么,我应该如何在main()中调用它?

int main()
{
    void *d;
    //SOMETHING wrong in next four line
    d=&func1("abcd");
    func2(d);
    d=&func1("xyz");
    func2(d);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

小智 4

您可以简单地创建一个函数 ( func2),它接受一个指向您要调用的所需函数的函数指针,以及另一个接受指向您的字符串的指针的参数。然后用参数func2调用传入的函数指针str。

#include <stdio.h>

void func1(const char *str)
{
    puts(str);
}

void func2(void (*fp)(const char *), const char *str)
{
    fp(str);
}

int main(void)
{
    const char *str = "Hello world.";

    func2(func1, str);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)