2

这是代码的上下文:

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

表达式是否将(BIO *)argvoid 指针arg转换为指向 BIO 的指针?我不确定我是否做对了。

任何帮助将非常感激!

禅宗

4

4 回答 4

6

这叫做演员表;它不会转换指针,它会说服编译器相信传入的指针(无类型)实际上是指向 BIO 的指针,并将其视为 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 * 指针类型一样访问 ponter 的成员。

于 2010-07-13T10:24:14.057 回答