法大奥山研究室

 previous  contents

10.13. 関数へのポインタ (*f)()


 関数型については,次の文法があります。

この文法は,配列と同様に,特別に用意されたものです。(アドレス演算子を使用せずともアドレスを取得できるのは,配列と関数のみである。)例えば,

double f(char, int);

があったとき,関数指示子(式)f は関数 f のアドレスとなります。

 関数のアドレスを受け取ることのできるポインタが「関数へのポインタ」です。例えば,上の関数 f のアドレスを受け取るには,

double (*pf)();

といった具合に宣言したポインタ pf になります。これは doubleを返す関数へのポインタです。

/* Example 10.18 */

#include <stdio.h>

void f(void);

int main(void)
{
       void (*pf)(void) = f;
       pf();
       return 0;
}

void f(void)
{
       printf("Hello World!\n");
}

実行結果です。

Hello World!

pfvoid型関数へのポインタです。それを f に初期化しています。関数呼出しは pf() ですが,これは f() と同値です。すなわち,pf == f です。


 previous  contents