通常、機械語に翻訳されたプログラムはメモリ中に読み込まれる。同時に、 このプログラムの実行に必要で、最初に確保すべきデータなどの領域も 用意される。プログラムが実行されると、動的に確保されるメモリも 出て来る。このような静的、あるいは動的に確保されたメモリアドレス を指しているのがポインタであった。ところが、最初に述べたように プログラム自体もメモリ中にある。特に、C言語のような関数の集合と してプログラムが存在する場合、この関数自体がメモリ中に存在する訳で ある。従って、もしも適切な前処理を施せば、あるアドレス にあるプログラムを実行することも可能となる。しかし、闇雲に実行する のも問題があるし、何よりも非常に使いにくいだろう。そこで、C言語で は関数へのポインタというものが用意されている。関数ポインタは、 関数と同じように利用でき、引数と返り値を持っている。実は、C言語の 内部では関数名自体が関数へのアドレスそのものであるので、こうした 仕組みは驚くには値しない。