Non sono nuovo alla programmazione in C. Ma non capisco quale sia l'utilità per mantenere il puntatore a funzionare come membro di una struttura in C., ad es.Come i puntatori a funzionare come membro della struct sono utili in C?
// Fist Way: To keep pointer to function in struct
struct newtype{
int a;
char c;
int (*f)(struct newtype*);
} var;
int fun(struct newtype* v){
return v->a;
}
// Second way: Simple
struct newtype2{
int a;
char c;
} var2;
int fun2(struct newtype2* v){
return v->a;
}
int main(){
// Fist: Require two steps
var.f=fun;
var.f(&var);
//Second : simple to call
fun2(&var2);
}
Does programmatori usano per dare forma Object Oriented (OO) a lì codice C e fornire oggetto astratto? O per rendere il codice tecnico.
Penso che nel codice precedente il secondo modo sia più delicato e anche piuttosto semplice. In primo piano, dobbiamo ancora passare &var
, anche fun()
è membro di struct.
Se è utile mantenere il puntatore della funzione all'interno della definizione della struttura, si prega di spiegare il motivo.
Pensare alle funzioni virtuali nelle classi C++. Sono implementati in modo simile sotto il cofano. –
[Per quanto riguarda i puntatori di funzione nei sistemi incorporati] (http://stackoverflow.com/questions/4836245/function-pointers-in-embedded-systems- are-they-useful). – Lundin
Grazie a @Lundin! risposta davvero molto utile e interessante che ho trovato lì. –