表达“BIO * client =(BIO *)arg”是什么意思?

时间:2010-07-13 10:16:23

标签: c pointers void-pointers

以下是代码的上下文:

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

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

非常感谢任何帮助!

Z.Zen

4 个答案:

答案 0 :(得分:6)

它被称为演员;它不会转换指针,它说服编译器接受你的说法,即传入指针(无类型)实际上是指向BIO的指针,并将其视为BIO。

答案 1 :(得分:1)

是。 (BIO *) 强制转换 void *指针(arg)为BIO *类型

答案 2 :(得分:1)

它将void *转换(强制转换)为BIO *类型的指针。它没有“指向”BIO。

答案 3 :(得分:0)

您的输入变量arg的类型为void。 Typecasting只是将一种类型的变量转换为另一种类型。当您将指针作为参数传递给不同的函数并在解除引用它们时将它们转换为原始类型时,这非常有用。

在上面的例子中,从(void *)类型到(BIO *)类型的类型转换arg。现在,您可以像访问普通的BIO *指针类型一样访问ponter client的成员。