私はCでプログラミングしたことがないので、この構造が何をするのか誰か教えてください。
void funcName(void * self)
{ ... }
私が理解している限り、funcNameは未知のデータへのポインターを受け取り、この関数は何も受け取りません
しかし、なぜボイド*自己があるのか
私はCでプログラミングしたことがないので、この構造が何をするのか誰か教えてください。
void funcName(void * self)
{ ... }
私が理解している限り、funcNameは未知のデータへのポインターを受け取り、この関数は何も受け取りません
しかし、なぜボイド*自己があるのか
これは、voidポインター(特定のタイプのないポインター)を受け取る関数です。ボイドポインタ型を使用すると、そのように宣言された関数への任意のデータ型へのポインタを渡すことができます。関数は、ポインタからデータを読み書きする前に、ポインタを適切な型にキャストするか、ポインタを他の関数に渡す必要がありますvoid*
。
void*
任意のポインタを、暗黙的または明示的ににキャストできます。たとえば、次funcName
のように呼び出すことができます。
int *ptr = malloc(100*sizeof(int));
funcName(ptr); // No error
次に、異なるポインタタイプで同じ関数を呼び出すことができます。
struct mystruct_t *ptr = malloc(100*sizeof(mystruct_t));
funcName(ptr); // Again, no error
ポインターの名前から判断すると、self
この関数は、Cで使用可能な構造を使用して、オブジェクト指向のプログラミングスタイルをエミュレートしようとしている可能性があります。メンバー関数のように暗黙的にポインターをデータに渡す代わりに、このスタイルはデータへの明示的なポインタ。ポインタはしばしばまたはと呼ばれthis
ますself
。