C言語の構造体関数ポインタに値を代入の方法

C言語において、構造体の関数ポインタの代入は以下のように行います。

  1. 関数ポインタメンバーを持つ構造体型を定義する。例えば、
  2. typedef struct {
    int (*func)(int, int); // 関数ポインタメンバー
    } MyStruct;
  3. 構造体関数のポインタのシグネチャと一致する関数を定義します。以下に例を示します。
  4. int Add(int a, int b) {
    return a + b;
    }
  5. 構造体オブジェクトを作成し、構造体の関数ポインタメンバに関数ポインタを代入します。例:
  6. MyStruct myStruct;
    myStruct.func = Add;

このように,myStruct.func は Add 関数を指します。myStruct.func を呼び出すことで、Add 関数を実行できます。

完全なサンプルコードを以下に示します。

#include <stdio.h>

typedef struct {
    int (*func)(int, int); // 函数指针成员
} MyStruct;

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

int main() {
    MyStruct myStruct;
    myStruct.func = Add;

    int result = myStruct.func(3, 4);
    printf("Result: %d\n", result);
    
    return 0;
}

実行結果:

Result: 7
bannerAds