¿Cómo punteros para funcionar como miembro de la estructura útil en C?

No soy nuevo en la programación de C Pero no entiendo cuál es la utilidad de mantener el puntero para que funcione como un miembro de estructura en C. por ejemplo,

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

¿Los programadores lo usan para dar forma orientada a objetos (OO) a su código C y proporcionar un objeto abstracto? O para hacer que el código parezca técnico.

Creo que, en el código anterior, la segunda forma es más suave y bastante simple también. En primer lugar, todavía tenemos que pasar&varinclusofun() Es miembro de la estructura.

Si es bueno mantener el puntero de la función dentro de la definición de la estructura, ayúdenos a explicar la razón.

Respuestas a la pregunta(6)

Su respuesta a la pregunta