首页 > 解决方案 > 多次调用函数 - (将函数作为参数传递) - C

问题描述

所以下面的代码可以用来传递一个函数作为参数:

void printNumber(int nbr)
{
    printf("%d\n", nbr);
}

void myFunction(void (*f)(int))
{
    for(int i = 0; i < 5; i++)
    {
        (*f)(i);
    }
}

int main(void)
{
    myFunction(printNumber);
    return (0);
}

但是如何更改该代码,以便在“myFunction”之外定义“printNumber”的整数?换句话说,我只想用相同的整数调用函数“myFunction”x 次。

我写了一些伪代码来解释我想要完成的事情:

void printNumber(int nbr)
{
    printf("%d\n", nbr);
}

void myFunction(void (*f)(*int)) //pseudocode
{
    for(int i = 0; i < 5; i++)
    {
        (*f)(*int); //pseudocode
    }
}

int main(void)
{
    myFunction(printNumber(5)); //pseudocode
    return (0);
}

标签: c

解决方案


printnumber(5)表示立即调用printnumber并传递它 5. 你想分别传递printnumberand5作为两个参数

void printNumber(int nbr)
{
    printf("%d\n", nbr);
}

// void (*f)(int) is a pointer to a function that takes an int
// arg is the int to pass in
void myFunction(void (*f)(int), int arg)
{
    for(int i = 0; i < 5; i++)
    {
        // call f and pass in arg
        (*f)(arg);
    }
}

int main(void)
{
    // pass the function and the arg to use
    myFunction(printNumber, 5);
    return (0);
}

推荐阅读