どのように私は "関数ポインタ"(と(例えば、関数がパラメータを持っている)をCで作成できますか?関数ポインタCで
関数ポインタCで
答えて
http://www.newty.de/fpt/index.html
typedef int (*MathFunc)(int, int);
int Add (int a, int b) {
printf ("Add %d %d\n", a, b);
return a + b; }
int Subtract (int a, int b) {
printf ("Subtract %d %d\n", a, b);
return a - b; }
int Perform (int a, int b, MathFunc f) {
return f (a, b); }
int main() {
printf ("(10 + 2) - 6 = %d\n",
Perform (Perform(10, 2, Add), 6, Subtract));
return 0; }
興味深い例 - *追加*フロートと2つの文字? –
もちろん、 'z'に3.145を追加して結果を整数として返すことをいつも望んでいないのですか?私はこの例を少し辛口なものに変更します。 –
typedef int (*funcptr)(int a, float b);
funcptr x = some_func;
int a = 3;
float b = 4.3;
x(a, b);
私は関数ポインタへの最初のダイビングだったとき、私は、このサイトが役に立ったと評価してい。
まず関数ポインタ宣言:関数プロトタイプとほぼ同じ
typedef int (*Pfunct)(int x, int y);
を。
しかし、あなたが作成したのは一種の関数ポインタ(typedef
)です。
は、だから今は、その型の関数ポインタを作成します。
Pfunct myFunction;
Pfunct myFunction2;
は今、それらに機能アドレスを割り当て、それらが機能しているようにあなたがそれらを使用することができます。
int add(int a, int b){
return a + b;
}
int subtract(int a, int b){
return a - b;
}
. . .
myFunction = add;
myFunction2 = subtract;
. . .
int a = 4;
int b = 6;
printf("%d\n", myFunction(a, myFunction2(b, a)));
関数ポインタはとても楽しいです。
また、我々が機能するためにポインタの配列を作成することができます。
double fun0(double x, double y) {
return x + y;
}
double fun1(double x, double y) {
return x - y;
}
double fun2(double x, double y) {
return x/y;
}
int main(int argc, char*argv[]) {
const int MaxFunSize = 3;
double (*funPtr[MaxFunSize])(double, double) = { fun0, fun1, fun2 };
for(int i = 0; i < MaxFunSize; i++)
printf("%f\n", funPtr[i](2.5, 1.1));
return 0;
}
ます。また、関数へのポインタを返す関数を定義することができます。
int (*f(int x))(double y);
fは単一のintパラメータをとる関数でありますdoubleパラメータをとり、intを返す関数へのポインタを返します。
- 1. C#関数ポインタ?
- 2. C++ポインタでない関数ポインタ
- 3. C++でのクラスメンバ関数ポインタ
- 4. C++メンバ関数ポインタ
- 5. C#の関数ポインタ
- 6. 関数ポインタfor C++
- 7. C++関数ポインタ型
- 8. C++ 11ラムダC関数ポインタ
- 9. Cで関数ポインタを返す関数へのポインタの構文
- 10. C関数ポインタへのポインタの返信
- 11. C++のメンバ関数への関数ポインタ
- 12. C++の関数ポインタとコールバック関数
- 13. Matlab関数ハンドルとC++関数ポインタ
- 14. cの逆関数の関数ポインタ
- 15. メンバ関数C++のポインタ
- 16. 関数ポインタとC++のテンプレート
- 17. C言語の関数ポインタ
- 18. C関数ポインタの混乱
- 19. SWIG C関数ポインタとJAVA
- 20. クラスメンバーへのC++関数ポインタ
- 21. 理解Cの関数ポインタ
- 22. 関数へのポインタC++
- 23. C関数ポインタの構文
- 24. C++関数ポインタのキャスト
- 25. 関数ポインタdelclaration in C++
- 26. C++ - 関数ポインタ付きハッシュテーブル
- 27. ラップC++の関数ポインタ
- 28. C:関数ポインタのセグメンテーションフォルト
- 29. 渡す関数ポインタC++
- 30. ステートフルC++グローバルvoid関数ポインタ
[Cの関数ポインタはどのようにして動作するのですか?](0120-385-006) –