这是代码的上下文:
void THREAD_CC server_thread(void *arg)
{
BIO *client = (BIO *)arg;
...
}
表达式是否将(BIO *)arg
void 指针arg
转换为指向 BIO 的指针?我不确定我是否做对了。
任何帮助将非常感激!
禅宗
这是代码的上下文:
void THREAD_CC server_thread(void *arg)
{
BIO *client = (BIO *)arg;
...
}
表达式是否将(BIO *)arg
void 指针arg
转换为指向 BIO 的指针?我不确定我是否做对了。
任何帮助将非常感激!
禅宗
这叫做演员表;它不会转换指针,它会说服编译器相信传入的指针(无类型)实际上是指向 BIO 的指针,并将其视为 BIO。
是的。将指针 (arg)(BIO *)
强制转换为类型void *
BIO *
它将 void* 转换(转换)为 BIO* 类型的指针。它不“指向” BIO。
您的输入变量arg
是 void 类型。类型转换只是将一种类型的变量转换为另一种类型。当您将指针作为参数传递给不同的函数并在取消引用它们时将它们类型转换为其原始类型时,这很有用。
在上述情况下,您arg
从 (void *) 类型转换为 (BIO *) 类型。client
现在您可以像访问普通的 BIO * 指针类型一样访问 ponter 的成员。