Como os ponteiros para funcionar como membro struct são úteis em C?

Eu não sou novo em programação C. Mas eu não entendo o que é útil para manter o ponteiro para funcionar como um membro de estrutura em C. e.

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

Os programadores a usam para dar forma a objetos orientados a objeto (OO) para o código C e fornecer objetos abstratos? Ou para fazer o código parecer técnico.

Eu acho que, no código acima, o segundo caminho é mais gentil e bastante simples também. Ainda assim, ainda temos que passar&var, atéfun() é membro da struct.

Se é bom manter ponteiro de função dentro da definição da estrutura, por favor, ajude a explicar o motivo.

questionAnswers(6)

yourAnswerToTheQuestion