我对 C 编程并不陌生。但我不明白在 C 中保持指针作为结构成员的作用有什么用处。例如
// 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);
}
程序员是否使用它为 C 代码赋予面向对象(OO)的形状并提供抽象对象?或者让代码看起来很技术。
我认为,在上面的代码中,第二种方式更温和,也很简单。在第一种方式中,我们仍然必须通过&var
,即使fun()
是 struct 的成员。
如果将函数指针保留在结构定义中很好,请帮助解释原因。