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

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

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

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


int (*func)();

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

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

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

コメント

_ 通りすがり ― 2009年02月02日 16時05分08秒

こんにちは。いつも記事拝見してます。

『エキスパートCプログラミング』か何かに載ってた「英語の語順で覚える」というのが参考になるかもしれません。

たしか、"func is pointer to function that returns int"だと、
"func is * to () return int"みたいな。

_ uyota ― 2009年02月03日 16時59分35秒

いつも、ありがとうございます。

よくその形で試すのですが、実際に完全に忘れた状態でやると、int *()func や int ()*func から始まって、四、五回コンパイラに注意された後に諦める事が多いのです。数日前にまたやってしまって、見つけやすい場所を増やすことにした訳です。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2009/01/28/4084768/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。