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.