コードのコンテキストは次のとおりです。
void THREAD_CC server_thread(void *arg)
{
BIO *client = (BIO *)arg;
...
}
式(BIO *)arg
は void ポインターarg
を BIO を指すポインターに変換しますか? これが正しいかどうかはわかりません。
どんな助けでも大歓迎です!
Z禅
コードのコンテキストは次のとおりです。
void THREAD_CC server_thread(void *arg)
{
BIO *client = (BIO *)arg;
...
}
式(BIO *)arg
は void ポインターarg
を BIO を指すポインターに変換しますか? これが正しいかどうかはわかりません。
どんな助けでも大歓迎です!
Z禅
これはキャストと呼ばれます。ポインターを変換するのではなく、コンパイラーに、着信ポインター (型指定されていない) が実際には BIO へのポインターであるという言葉を受け取り、そのように扱うように説得します。
はい。ポインタ (arg) を型に(BIO *)
キャストしますvoid *
BIO *
void* を BIO* 型のポインターに変換 (キャスト) します。BIO を「指す」わけではありません。
入力変数arg
の型は void です。型キャストは、ある型の変数を別の型にキャストするだけです。これは、ポインターを引数としてさまざまな関数に渡し、それらを逆参照するときに元の型に型キャストする場合に役立ちます。
arg
上記の場合、 (void *) 型から (BIO *) 型への型キャストです。client
これで、通常の BIO * ポインター型に対して行うように、ポンターのメンバーにアクセスできます。