我对C编程并不陌生。但我不明白什么是有用的,以保持指针在C中作为结构成员的功能。指针如何用作C中有用的struct成员?
// 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);
}
难道程序员用它来给面向对象(OO)的形状有C代码,并提供抽象的对象?或者让代码看起来很技术。
我觉得,在上面的代码中第二种方法也比较温和也很简单。以第一种方式,我们仍然必须通过&var
,即使fun()
也是struct的成员。
如果它在结构定义中保留函数指针很好,请帮忙解释一下原因。
想想C++类中的虚函数。它们在引擎盖下以相似的方式实施。 –
[关于嵌入式系统中的函数指针](http://stackoverflow.com/questions/4836245/function-pointers-in-embedded-systems-are-they-useful)。 – Lundin
谢谢@Lundin!我在那找到真正非常有用和有趣的答案。 –