Jak wskaźniki mają działać jako element struktury przydatny w C?
Nie jestem nowy w programowaniu w C. Ale nie rozumiem, co jest przydatne w utrzymywaniu wskaźnika jako członka struktury w C. np.
// 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);
}
Czy programiści używają go do nadania kształtu obiektowego (OO) kodowi C i dostarczenia abstrakcyjnego obiektu? Lub, aby kod wyglądał technicznie.
Myślę, że w powyższym kodzie drugi sposób jest bardziej łagodny i całkiem prosty. W pierwszej kolejności musimy jeszcze przejść&var
, parzystyfun()
jest członkiem struktury.
Jeśli dobrze jest zachować wskaźnik funkcji w definicji struktury, uprzejmie pomóż wyjaśnić przyczynę.