私は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);
}
プログラマーはそれを使用して、オブジェクト指向(OO)の形をCコードに与え、抽象オブジェクトを提供しますか?または、コードを技術的に見せるため。
上記のコードでは、2番目の方法もより穏やかで非常に単純だと思います。最初の方法では、構造体のメンバーで &var
あっても、まだ合格する必要があります。fun()
関数ポインタを構造体定義内に保持するのが良い場合は、理由を説明するのを手伝ってください。