|
> 関数のポインタというのは何バイトなんですか。
sizeofで調べてみればどうでしょうか?
(おそらく環境依存)
以下は関数ポインタを使った一例です。
# 関数ポインタ以外のところは突っ込まないでください。
#include <stdio.h>
int add( const int a, const int b )
{
return a + b;
}
int sub( const int a, const int b )
{
return a - b;
}
int mul( const int a, const int b )
{
return a * b;
}
int div( const int a, const int b )
{
return a / b;
}
int mod( const int a, const int b )
{
return a % b;
}
typedef int ( *func )( const int, const int );
int main( void )
{
func calc[] = { &add, &sub, &mul, &div, &mod };
const char* funcname = "addsubmuldivmod";
const int a = 10, b = 3;
int i;
printf( "a = %d, b = %d\n", a, b );
for ( i = 0; i < sizeof( calc ) / sizeof( func ); i++ )
{
printf( "%.3s( a, b ) : %d\n", funcname + i * 3, calc[ i ]( a, b ) );
}
return 0;
}
|