「関数へのポインタとtypedef」
引数を受け取らずint型を返却する関数へのポインタは、以下のように宣言できる。
int ( *func )(void);
このように、関数へのポインタは、その型の記述が複雑になるので、一般的にはtypedef宣言を導入する。上の宣言は、次のように書き換えることができる。
typedef int fiv (void);fiv *func;
ここでは、関数方にtypedef名を与えているが、関数へのポインタ型にtypedef名を与えると、次にようにも記述できる。
typedef int (*piv)(void);piv func;
たとえば、int sum(void){・・・・}という関数が与えられているとすると、ここで、func = sum;という代入によって、funcは関数sumを指すことになる。また、このときfunc();によって、funcの指す関数すなわち関数sumを呼び出すことができる。