2

関数 (B) に関数 (A) をパラメーターとして与えるにはどうすればよいですか?

関数Bで関数Aを使用できるようにします。

次の例の変数 B のように:

foo(int B) { ... }
4

3 に答える 3

4

関数ポインタを使用する。qsort()たとえば、標準ライブラリ関数を見てください。

例:

#include <stdlib.h>

int op_add(int a, int b)
{
  return a + b;
}

int operate(int a, int b, int (*op)(int, int))
{
  return op(a, b);
}

int main(void)
{
  printf("12 + 4 is %d\n", operate(12, 4, op_add));

  return EXIT_SUCCESS;
}

印刷します12 + 4 is 16

操作は、関数内から呼び出される関数へのポインターとして指定されoperate()ます。

于 2012-09-13T10:54:50.550 に答える
2

呼び出したい関数があるとしましょう:

void foo() { ... }

そして、あなたはそれを呼び出したいbar

void bar(void (*fun)())
{
    /* Call the function */
    fun();
}

次にbar、次のように呼び出すことができます。

bar(foo);
于 2012-09-13T10:56:01.730 に答える
2

別の関数のパラメーター リストに関数ポインター型を書き込むと、特にポインターが複雑な場合に少し奇妙に見えるため、typedef をお勧めします。

#include <stdio.h>

typedef int func(int a, int b);

int add(int a, int b) { return a + b; }

int operate(int a, int b, func op)
{
    return op(a, b);
}

int main()
{
    printf("%d\n", operate(3, 4, add));
    return 0;
}
于 2012-09-13T10:58:52.847 に答える