gpt4 book ai didi

c - 预期为 ‘double (*)(double)’,但参数的类型为 C 中的 ‘double’

转载 作者:行者123 更新时间:2023-11-30 16:48:21 24 4
gpt4 key购买 nike

我需要帮助,我正在尝试使用 C 中的梯形规则计算函数的积分。

我试图在另一个函数中使用一个函数作为变量,但我在编译时遇到问题,它给出了与标题相同的消息。

这是代码

#include <stdio.h>
#include <math.h>
double test(double x){
return pow(x,2);
}

double tarpez(double a,double b, int n, double (*test)(double )){
/*x[n] represents the parameter
y[n] respresents the parameter ,a initial x,
h is the length of divided spaces*/

double h,x[n],y[n],So,Se;//So-- sum of odd, Se- ...even
h = (b-a)/n;
if (n%2==1){
n+=1;
}
for (int i ; i<=n;i++){
x[i]= a+i*h;
y[i] = test(x[i]);
printf("%lf\n",y[i] );

}
}

int main(void){
double x,a,b,fn;
int n;
fn =
tarpez(a,b,n,test(x));
}

最佳答案

Primo, double (*test)(double ) 是类型名称,如 int 或 float。所以你需要声明 double (*test)(double ) foo 其中 foo 是变量名(如 int n)。Scundo,类型名称不能是函数名称。函数指针需要返回 tupe、args 类型和非保留名称。所以尝试 double (*custom_name)(double )。第三,在主函数中没有 tarpez(a,b,n,test(x))。使用 tarpez(a,b,n,测试);您在此空间中仅使用名称。

PS尝试使用 typedef。

关于c - 预期为 ‘double (*)(double)’,但参数的类型为 C 中的 ‘double’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008096/

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