あなたが正しいです。関数ポインタは、同じ戻り型で同じ数の引数を取るさまざまな関数を指すために便利に使用できます。引数の型は、関数ポインタ引数の宣言と一致する必要があります。
あなたの場合、関数ポインタg
を次のように定義できます。
typedef int (*g)(int);
//typedef
関数ポインタの。
g
は、値を返し、1つの引数int
を取る関数の関数ポインタです。int
関数ポインタの使用法は、以下の簡単なプログラムで説明できます。
#include<stdio.h>
typedef int (*pointer_to_function)(int first_parameter_of_type_int, int second_parameter_of_type_int);
int my_function_returning_int_and_taking_two_int_arguments(int par1, int par2)
{
int result = par1 + par2;
return result;
}
int my_mul_function(int par1, int par2)
{
int result = par1 * par2;
return result;
}
int main()
{
int res; // returning result will be here
pointer_to_function my_fun_pointer; // declare function pointer variable;
my_fun_pointer = my_function_returning_int_and_taking_two_int_arguments; // function pointer points to `my_function_returning_int_and_taking_two_int_arguments` function
res = my_fun_pointer(2,3); // Call function through pointer
printf(" result of `my_function_returning_int_and_taking_two_int_arguments` = %d \n", res);
my_fun_pointer = my_mul_function; // now function pointer points to another function: `my_mul_function`
res = my_fun_pointer(2,3); // Call function through pointer
printf(" result of `my_mul_function` = %d \n", res);
return 0;
}
出力:
result of `my_function_returning_int_and_taking_two_int_arguments` = 5
result of `my_mul_function` = 6