私はCプログラミングの新人ではありません。しかし、私はポインタが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)形状を与え、抽象オブジェクトを提供するために、それを使用していますか?コードを技術的に見せることもできます。
私は、上記のコードでは、第2の方法はやさしく簡単だと思います。最初の方法では、我々はまだ&var
を渡さなければならず、さらにfun()
はstructのメンバです。
関数のポインタを構造体の定義内に保つことが良いのであれば、その理由を説明するのを助けてください。
C++クラスの仮想関数について考える。彼らは同様の方法で実装されています。 –
[組み込みシステムの関数ポインタについて](http://stackoverflow.com/questions/4836245/function-pointers-in-embedded-systems-are-the-useful)。 – Lundin
ありがとう@Lundin!私がそこで見つけた本当に非常に有用で興味深い答え。 –