Что означает выражение «BIO * client = (BIO *) arg»? - PullRequest
2 голосов
/ 13 июля 2010

Вот контекст кода:

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

Преобразует ли выражение (BIO *)arg пустой указатель arg в указатель, который указывает на BIO?Я не уверен, правильно я понял или нет.

Любая помощь будет высоко ценится!

Z.Zen

Ответы [ 4 ]

6 голосов
/ 13 июля 2010

Это называется броском; он не преобразует указатель, он убеждает компилятор принять ваше слово, что входящий указатель (который не является типизированным) на самом деле является указателем на BIO, и обрабатывать его как таковой.

1 голос
/ 13 июля 2010

Преобразует (преобразует) пустоту * в указатель типа BIO *.Это не "указывает на" БИО.

1 голос
/ 13 июля 2010

Да. (BIO *) приводит указатель void * (arg) к типу BIO *

0 голосов
/ 13 июля 2010

Ваша входная переменная arg имеет тип void. Typecasting просто приводит переменную одного типа к другому.Это полезно, когда вы передаете указатели в качестве аргументов различным функциям и преобразуете их к их исходному типу при разыменовании.

В приведенном выше случае ваше приведение типов arg из типа (void *) в тип (BIO *),Теперь вы можете получить доступ к членам понтера client, как если бы вы делали это с обычным типом указателя BIO *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...