double tran(double (*)(雙),double (*)(雙),double);
是tran函數的聲明。告訴編譯器有這樣壹個函數,並聲明函數的格式。
返回類型函數名(參數1類型,參數2類型);
“;”在後面,這是壹個格式要求
後面的Tran
double tran(double(* f 1)(double),double (*f2)(double),double x)
{ return(* f 1)(x)/(* F2)(x);}
是tran函數的實現。
這裏的tran函數有三個參數,其中
第壹個參數:返回壹個double類型的指針,指向壹個帶有double參數的函數;
第二個參數:返回壹個double類型的指針,指向壹個帶有double參數的函數;
第三個參數:double
參數1參數2不是普通的變量而是函數的入口。
轉移
y=tran(sin,cos,v);//* *//
也就是說函數的實現部分使用了tran的參數1和參數2,形參1 *f1形參2 *f2。
Double sin(double)和double cos(double)反而是兩個實用函數。
(*f1)(x)/(*f2)(x)實際計算為sin(v)/cos(v)。
計算的結果是tan(v)
如果妳想計算cot(v)
y=tran(cos,sin,v)
也可以編寫自己的函數作為參數調用tran。
double myfun1(雙x)
{
return exp(-x);
}
double myfun2(雙x)
{
返回x * x
}
轉移
y=tran(myfun1,myfun2,v);
這個調用計算exp(-v)/(v*v)。
x是壹個雙數值參數。