因此,下面的代码可以作为参数传递一个函数:
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);
}但是,如何更改该代码,使“printNumber”的整数在“myFunction”之外定义?换句话说,我只想用相同的整数调用函数“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);
}发布于 2019-12-22 21:25:39
printnumber(5)意味着立即调用printnumber并将其传递给5。
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);
}发布于 2019-12-22 21:26:37
你需要再争论一次。
void printNumber(int nbr)
{
printf("%d\n", nbr);
}
void myFunction(void (*f)(int), int Arg)
{
for(int i = 0; i < 5; i++)
{
(*f)(Arg);
}
}
int main(void)
{
myFunction(printNumber, 42);
return (0);
}参数声明void (*f)(int)只表示f指向的函数需要一个int。这并不意味着int也会以某种方式打包到函数指针中。
https://stackoverflow.com/questions/59448119
复制相似问题