- [[C言語]]で定義できる[[関数]]の[[ポインタ]]
- [[C言語]]は関数も[[ポインタ]]として渡すことができ、ポインタの渡し先で関数を呼び出すことができます
- ただし、実行する場合は引数の型を合わせる必要があります
- **定義例**
- `int (*func)(int, int);`
- **代入例**
- `func = add;`
- **使用例**
- `func(1,3);`
- **応用**
- 配列と組み合わせることで関数を選択できるようになったりします
```c
int (*calc[4])(int, int) = {add, sub, mlt, div};
calc[0](3,5); // 3+5=8
calc[2](1,2); // 1*2=2
```
**サンプル**
```c
int add(int a, int b)
{
return (a + b);
}
int sub(int a, int b);
{
return (a - b);
}
int main(void)
{
// 関数ポインタの宣言
int (*ope)(int, int);
// addのアドレスをopeに代入
ope = add;
printf("add=%d",ope(2,3)); // 5が表示される
ope = sub;
printf("sub=%d",ope(2,3)); // -1が表示される
}
```