gpt4 book ai didi

c++ - 函数作为参数 vs 函数指针作为参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:43 28 4
gpt4 key购买 nike

一边听斯坦福大学的 Programming Abstractions当然,我遇到了一些如下所示的代码。

void plot(double start, double end, double (fn)(double)) {
double i;
for (i = start; i <= end; i += 1)
printf("fn(%f) = %f\n", i, fn(i));
}

double plus1(double x) {
return x + 1;
}

int main(void) {
plot(1, 10, plus1);
return 0;
}

我在我的系统上使用 GCC 编译了代码,然后是 G++;它们都运行完美。

我知道传递 int i = 2进入函数,例如 void func1(int a)将制作一份新拷贝 i在传递 &i 时为该函数至 void func2(int *a)只会给出函数 func2 i的地址.

谁能给我解释一下传递fn的机制是什么?至 plot它与将函数指针作为参数传递有何不同?

最佳答案

void foo(double fn(double))void foo(double (*fn)(double)) 完全没有区别。两者都声明将指向函数的指针作为参数的函数。

这类似于 void bar(double arr[10])void bar(double* arr) 之间没有区别的方式。

关于c++ - 函数作为参数 vs 函数指针作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9139689/

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