Wie können Zeiger als Strukturelement in C verwendet werden?

Ich bin nicht neu in der C-Programmierung. Ich verstehe aber nicht, was nützlich ist, um den Zeiger auf die Funktion als Strukturelement in C zu halten. Z.B.

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

Verwenden Programmierer es, um dem C-Code eine objektorientierte Form (Object Oriented, OO) zu geben und ein abstraktes Objekt bereitzustellen? Oder um den Code technisch aussehen zu lassen.

Ich denke, im obigen Code ist der zweite Weg sanfter und auch ziemlich einfach. In erster Linie müssen wir noch bestehen&var, sogarfun() ist Mitglied von struct.

Wenn es gut ist, den Funktionszeiger in der Strukturdefinition zu belassen, helfen Sie bitte, den Grund zu erklären.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage