Comment pointeurs de fonction struct membre utile en C?

Je ne suis pas nouvelle à la programmation en C. Mais je ne comprends pas quelle est l'utilité de garder le pointeur de fonction en tant que membre de structure en C. par exemple,

    //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);    
    }

Ne programmeurs de l'utiliser pour donner Orientée Objet(OO), forme pour il code C et de fournir de l'objet abstrait? Ou le code aspect technique.

Je pense que, dans le code ci-dessus la deuxième façon est plus doux et assez simple aussi. Dans fist façon, il nous reste à passer &var, même fun() est membre de la struct.

Si son bon de garder le pointeur de fonction au sein de structure de définition, de bien vouloir nous aider à expliquer la raison.

Pensez à des fonctions virtuelles en C++ classes. Ils sont mis en œuvre dans un mode similaire sous le capot.
Concernant les pointeurs de fonction dans les systèmes embarqués.
Merci @Lundin! vraiment très intéressants et utiles sur la réponse que j'y ai trouvés.

OriginalL'auteur Grijesh Chauhan | 2012-10-19