2

コードのコンテキストは次のとおりです。

void THREAD_CC server_thread(void *arg)
{
    BIO *client = (BIO *)arg;
        ...
}

(BIO *)argは void ポインターargを BIO を指すポインターに変換しますか? これが正しいかどうかはわかりません。

どんな助けでも大歓迎です!

Z禅

4

4 に答える 4

6

これはキャストと呼ばれます。ポインターを変換するのではなく、コンパイラーに、着信ポインター (型指定されていない) が実際には BIO へのポインターであるという言葉を受け取り、そのように扱うように説得します。

于 2010-07-13T10:19:10.183 に答える
1

はい。ポインタ (arg) を型に(BIO *) キャストしますvoid *BIO *

于 2010-07-13T10:18:21.490 に答える
1

void* を BIO* 型のポインターに変換 (キャスト) します。BIO を「指す」わけではありません。

于 2010-07-13T10:18:52.847 に答える
0

入力変数argの型は void です。型キャストは、ある型の変数を別の型にキャストするだけですこれは、ポインターを引数としてさまざまな関数に渡し、それらを逆参照するときに元の型に型キャストする場合に役立ちます。

arg上記の場合、 (void *) 型から (BIO *) 型への型キャストです。clientこれで、通常の BIO * ポインター型に対して行うように、ポンターのメンバーにアクセスできます。

于 2010-07-13T10:24:14.057 に答える