【发布时间】:2012-02-26 17:20:22
【问题描述】:
在听斯坦福的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 的机制是什么以及它与将函数指针作为参数传递有何不同?
【问题讨论】:
标签: c++ c function parameters