这是我第一次使用指针函数。指针函数c语言基础
我想要做的是创建一个称为essay的函数,它获取指向另一个函数的指针,一个整数num,然后num加倍。
函数essay会将参数相乘,然后将函数i的值作为参数返回给产品。
这听起来很复杂,但它确实很简单。 例子:
essay(sin,2,pi,1/2) will return the value of sin(pi/2)
这是我的代码...由于某种原因,它没有让我的指针发送到功能的罪。说没有重载函数罪的实例符合参数列表,但这正是我看到我的老师做的事情......我想。
#include <stdio.h>
#include <conio.h>
#include <stdarg.h>
#include <math.h>
double (*pfunc)(double);
double essay(double* pfunc(double),double num, ...)
{
int i;
double product=1,result;
va_list arguments;
va_start(arguments,num);
for(i=0;i<num;i++)
product*=va_arg(arguments,double);
va_end(arguments);
result=*(pfunc(product));
return result;
}
void main()
{
double x,y;
x=3.14159265358979323846;
y=0.5;
printf("%lf",essay(sin,2,x,y));
getch();
}
为什么不像这个'#define _USE_MATH_DEFINES'和代码中使用'M_PI'来定义您的PI(x)值?只是一个旁注。 – Kyslik
您还正在使用C++编译器编译C代码。不要这样做! (和'main()'应该返回'int')。 –
'essay'的第二个参数应该是'int',而不是'double'。如果使用3.5作为要处理的参数数目来调用,您将要做什么?另外,当你按照答案中的讨论修正了函数指针参数的类型时,你可以写'result = pfunc(product);'或'result =(* pfunc)(product);'来评估函数。你需要'*',因为你的函数定义中多余的'*'。 –