日記

日本語の勉強のためのブログ

関数ポインタとそのキャストについて

調べてわかったことをまとめる。

関数ポインタ

その名の通り、関数を指すポインタ。次のように定義する。

// long型の引数を2つ受け取り、long型の値を返す、varという関数へのポインタ
long (*var)(long, long);

ちなみに*varを囲むカッコを外してしまうと、long *を返す関数のプロトタイプ宣言になってしまう。なので外せない。

long *var(long, long);

関数ポインタへのキャスト

以下のようにキャストできる。

(long (*)(long, long))var

覚え方としては、関数ポインタの定義から識別子(ここでは関数名)を抜いたものとして覚えるのがよさそう。

(long (*var)(long, long))
↓
(long (*)(long, long))

参考