Hai ragione. Il puntatore della funzione può essere convenientemente utilizzato per indicare le diverse funzioni dello stesso tipo di ritorno e prendendo lo stesso numero di argomenti. I tipi di argomento devono corrispondere alla dichiarazione degli argomenti del puntatore della funzione.
Nel tuo caso si potrebbe definire il puntatore a funzione g
come:
typedef int (*g)(int);
// typedef
del puntatore a funzione.
g
è un puntatore di funzione per la funzione che restituisce il valore int
e prende un argomento int
.
L'utilizzo del puntatore a funzione potrebbe essere illustrato da un semplice programma di seguito:
#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;
}
USCITA:
result of `my_function_returning_int_and_taking_two_int_arguments` = 5
result of `my_mul_function` = 6
Il codice non può assolutamente funzionare perché se G è un typedef, si puo' Lo chiamo come una funzione. Puoi descrivere cosa stai specificatamente cercando di fare? – templatetypedef
Davvero? Pensavo che il mio capo mi avesse detto di usare un typedef per farlo funzionare. Riuscirai a realizzare qualcosa di simile a #Define? – SetSlapShot
Che cosa stai cercando di fare in particolare? Non è chiaro cosa stai tentando di fare. – templatetypedef