関数へのポインタを扱うのはこれが初めてです。
私がやろうとしているのは、別の関数へのポインター、整数 num、そして num doubles を取得する、エッセイと呼ばれる関数を作成することです。
関数 エッセイ は、引数を乗算し、引数として受け取った関数 i の値を積で返します。
これは複雑に聞こえますが、実際には非常に単純です。例:
essay(sin,2,pi,1/2) will return the value of sin(pi/2)
これは私のコードです...何らかの理由で、ポインタを関数sinに送信できません。オーバーロードされた関数 sin のインスタンスは引数リストに一致しないと言いますが、これはまさに私の先生がそれを行うのを見た方法です...と思います。
#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();
}