関数へのポインタ
以下の例では、関数へのポインタとしてfunc_ptrが宣言され、そこへ関数my_functionのアドレスを割り当てている。そしてfunc_ptrを通じて関数を呼び出している。
注1: 関数シンボルf自体は関数型 (function type) であり、関数型は関数ポインタとは異なる。単項のアドレス演算子 (address operator) &を付与した式&fは関数ポインタを返す。しかし、関数型の式fは関数へのポインタに暗黙変換されるため、アドレス演算子を適用せずとも関数へのポインタに代入可能である。
注2: 関数へのポインタfpに単項の間接演算子 (indirection operator) *を付与した式*fpは関数指示子 (function designator) となる。(*fp)(arg)という構文は、関数へのポインタfpを通じて関数を呼び出す構文である。しかしCではfp(arg)という構文も認められている。
注3: 関数ポインタの宣言における仮引数リストは、型が一致してさえいればいいので、仮引数の名前は省略できる。
次の例では、関数へのポインタを引数として他の関数に渡している。ここでは、関数my_functionが、先の例のように関数へのポインタを通じて呼び出される。関数callerは、引数として関数へのポインタと整数値を1つ取る。引数の整数値は、その関数へのポインタを通じて関数を呼び出すときに渡す引数として用いられる。