MrO*_*ire 6 c c++ parameters function
在聆听斯坦福大学的编程抽象课程时,我遇到了一些如下所示的代码.
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;
}
Run Code Online (Sandbox Code Playgroud)
我使用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).