发布网友 发布时间:2024-10-24 00:15
共2个回答
热心网友 时间:2024-10-29 19:03
对于 幽幽我心 的回答,我觉得 好像是对的。我的印象里 也是 这样的。先回答楼主问题。
double sum_square (double(*f)(double x),int a) 这个是函数声明,楼主是知道的,楼主所看不懂的是
(double(*f)(double x),int a) 这个参数表,对吧?这个参数表里有两个参数 参数1:double(*f)(double x),参数2:int a 楼主,能理解不?相信应该还能勉强理解吧。
然后我们来说说 这个 看不懂的参数1 double(*f)(double x) 参数1 这种形式 叫做函数指针。什么意思呢?
就是告诉编译器 你要使用 这种类型的 函数 来当参数 传进入 让 程序 使用这种函数 进行处理。
那么具体是什么呢?“这种类型的函数”到底是哪种类型的函数呢?我们知道 函数 是由 函数名和参数表组成的,参数表 决定了 这个函数是啥类型的,就是说 这里要传入一个 传入double型 返回double型的函数指针,在程序代码中,我们可以看的更清楚 double molti (double x) 就是符合我们要求的函数类型,程序里main函数里 sum=sum_square(multi,i); 这句 仔细看 multi 是不是 就是 将 这个...不对,你函数名字写错了,两个名字不一样!这个是第一,第2,在double sum_square (double(*f)(double x),int a) 中 不能写x,应该写成double sum_square (double(*f)(double ),int a) 这样就可以了。这就是函数指针,程序在执行 sum_square 的时候就会使用 molti 这个函数 去执行里面的运算 sum+=f(x)*f(x); 这个f相当于 就是 molti
热心网友 时间:2024-10-29 18:57
你的sum_square函数的第一个参数声明有点问题吧,我记得声明函数指针作为参数时,不需要指出函数指针所指向的函数的形参吧,只需要声明形参类型即可。
所以,那个形参x貌似不能用直接通过函数指针这个参数传递吧,而是再定义一个形参来接受。所以我认为应该这么定义它:
double sum_square(double (*f)(double),double x,int a);