C言語で科学計算をやらなければならない状況になりました。
そこで質問です。
ものすごく基本的なことだと思うのですが・・・

aからbまで積分をするルーチンが以下のように与えられています。

float qromb(float (*func)(float), float a, float b)
{

・・・・・
}

これを使うときの呼び出し方がわからないのです。
a,bは積分の下限・上限なので例えば 0,1 として、
s= qromb(float (*func)(float), 0, 1 );
のようにすればいいと思うのですが、

(*func)(float)
の部分がよくわかりません。

例えば、f(x)=x を0~1で積分するようなときは、
どのような宣言をして、どのようにルーチンを呼び出せばいいのでしょうか。
またこの(*func)(float) は何を意味しているのでしょうか?


とても基本的なことだとは思うのですが、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

float (*func)(float)



とあれば,func は float 型の引数を1つとって,
float 型の戻り値を返す関数へのポインタです。

というわけで,float 型の引数を1つとって,
float 型の戻り値を返す関数を定義して,
そのポインタを qromb に渡せばいいです。

float f(float x)
{
  return x;
}

//
s = qromb(f, 0, 1);
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
分かりました。
引数宣言の中にさらに()が入っているのを見るのが初めてだったもので。

やっぱりC言語はポインタがキーですよね?
使えるように勉強します・・・

お礼日時:2003/09/09 23:59

#1の方が説明されていますね。


関数名を引数としてそのまま渡せばいいです。
qsort関数もこのうちの一つですね。

void qsort ( void * base, size_t num, size_t width, int (*fncompare)(const void *, const void *) );

float qromb(float (*func)(float), float a, float b);
とあれば
引数にfloatを1つ取り、float型を戻り値とする関数を
別に用意しなければいけません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
できました。

お礼日時:2003/10/11 03:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報