関数ポインタ: int (*func)()2009年01月28日 07時04分23秒

C 言語では、関数を変数に代入することが出来る。

関数とは基本的に実行命令を記述している番地を差すので、データの在処を示すポインタと何ら変わらない。

しかし、一つだけ困った問題がある。個人的な問題だが、この書式を、すぐに忘れてしまい使いたい時には必ず探し回るのだ。


int (*func)();

にて、int を返す関数を代入できる変数を定義出来る。どうも括弧の位置が覚えられない。

なお、typedef を使う方法は、関数ポインタであることが定義から見づらくなるので好きではない。

探し場所としては、man があるシステム上であれば、man qsort。これは stdlib に入っているので、man があればほぼ出てくる。man が無い場合は、以前に自分の書いたコード。ただし、何処で使ったかが分からなかったり、コードベースが移動していたり、無くなっていたりすることも。もし、インターネットが使えれば、blog なり google なりで。