void *
関数にパラメーターがある場合の意味を知る必要があります。例えば:
function(void * param){}
を受け取る機能ですvoid*
。これは、C で任意の種類のポインターを渡すために使用できます。
pthread_create
関数と pthread 開始ルーチンが良い例です。
ただし、戻り値の型が指定されint
ていない場合、デフォルトで が返されることに注意してください。これは、例ではありません。
Aは任意のデータvoid *
へのポインタ、つまり不明または未指定のデータへのポインタです。
param
void ポインターは、任意のデータ型へのポインターを意味します。ジェネリック型ポインターを呼び出すことができます。
例えば
func(void *param)
{
// body
}
次のように呼び出します:
char* cptr;
int* iptr;
float* fptr;
func(cptr);
func(iptr);
func(fptr);
param
typevoid *
を持ち、C では「ジェネリック」ポインター型として機能します。明示的なキャストを必要とせずに、任意のオブジェクト ポインター型を に変換しvoid *
たり、その逆を行ったりできます (一部の実装では、関数ポインター型を に変換できますvoid *
が、これは普遍的ではなく、言語標準によって保証されていません)。
void
ポインターは逆参照できない可能性があるためx = *param
、関数の本体で次のようなことを行うことはできないことに注意してください。ポインターが指すものを取得するには、ポインターをint *
orなどの別の型に変換する必要があります。double *
そして、それはそれをどうするかによって異なりfunction
ます。
これは、タイプ void* (void への参照) のパラメーターを意味し、これはメモリーロケーションのサイズです。これで任意のメモリ位置を参照できますが、実際には何でも参照できます。