Ich bin nicht neu in der C-Programmierung. Aber ich verstehe nicht, was sinnvoll ist, um den Zeiger als Strukturelement in C zu halten, z.Wie Zeiger, um als Strukturelement in C nützlich zu sein?
// 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);
}
Does Programmierer verwenden es objektorientierte (OO) Form gibt C-Code und bieten abstraktes Objekt zu geben? Oder 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 &var
10 übergeben, auch fun()
ist Mitglied von struct.
Wenn es gut ist, Funktionszeiger in Struct-Definition zu halten, bitte helfen, den Grund zu erklären.
Denken Sie an virtuelle Funktionen in C++ - Klassen. Sie sind in ähnlicher Weise unter der Haube implementiert. –
[In Bezug auf Funktionszeiger in eingebetteten Systemen] (http://stackoverflow.com/questions/4836245/function-pointers-in-embedded-systems-are-theyususeful). – Lundin
Danke @Lundin! wirklich sehr hilfreiche und interessante Antwort, die ich dort gefunden habe. –