C言語の構造体関数ポインタに値を代入の方法
C言語において、構造体の関数ポインタの代入は以下のように行います。
- 関数ポインタメンバーを持つ構造体型を定義する。例えば、
- typedef struct {
int (*func)(int, int); // 関数ポインタメンバー
} MyStruct; - 構造体関数のポインタのシグネチャと一致する関数を定義します。以下に例を示します。
- int Add(int a, int b) {
return a + b;
} - 構造体オブジェクトを作成し、構造体の関数ポインタメンバに関数ポインタを代入します。例:
- 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