【发布时间】:2016-12-13 17:36:43
【问题描述】:
代码如下。请解释并给出输出。
#include <iostream>
#include <conio.h>
using namespace::std;
int main() {
// clrscr();
int sum(int(*)(int), int);
int square(int);
int cube(int);
cout << sum(square, 4) << endl;
cout << sum(cube, 4) << endl;
getch();
// return 0;
}
int sum(int(*ptr)(int k), int n){
int s = 0;
for(int i =1; i <= n; i++){
s +=(*ptr)(i);
}
return s;
}
int square(int k){
int sq;
sq =k *k;
return k*k;
}
int cube(int k){
return k*k*k;
}
不知道发生了什么!请帮助我理解这段代码。特别是在功能上
int sum(int(*)(int), int);
尤其无法理解上述语法。但是解释整个代码会很有帮助。
【问题讨论】:
-
请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述。
-
有一个工具叫做调试器。有了它,您可以逐行浏览代码并观察它的运行情况。
type (*possible_name)(parameters)也是一个函数指针。 -
看起来很奇怪的代码是声明函数的参数本身就是另一个具有 int 类型参数的函数。可以这样想,您正在将函数的地址传递给另一个函数。然后被调用的函数可以使用该地址来调用它指向的函数。
-
@Slava 我知道指针和函数。但是这种语法对我来说是新的
-
@DewangGupta 那么,在向这里提问之前,您是否尝试过至少对它进行一些研究?
标签: c++ function pointers output