私はこれらの2つのテスト機能を持っています。これらの関数ポインタはどちらもC/C++では合法なのですか?
int apply_a(int (*fun)(int, int), int m, int n) {
return (*fun)(m,n);
}
int apply_b(int (*fun)(int, int), int m, int n) {
return fun(m,n);
}
彼らは別の何かを返すように見えるので、なぜそれらの両方が同じ結果を得ていますか?
int add(int a, int b) {return a + b;}
int res_a = apply_a(add, 2, 3); // returns 5
int res_b = apply_b(add, 2, 3); // returns 5
私は、それらのうちの1つがポインタアドレスまたはポインタ自体を返すと仮定しました。ポインターに格納されている値ではなく...
だからこそこれはなぜですか?
を。 2番目のケースはコールです(カッコで渡されたパラメータで渡せます)。 – StoryTeller
いずれも良いことではありません。 3つ星のプログラマになるには '(*** fun)(m、n)'を使うべきです。 –