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

Z.Z*_*Zen 2 c pointers void-pointers

以下是代码的上下文:

void THREAD_CC server_thread(void *arg)
{
    BIO *client = (BIO *)arg;
        ...
}
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将非常感激!

Z.Zen

Car*_*icz 6

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

  • ShinTakezou:虽然这就是今天最常见的机器工作方式(所有指针在下面看起来都是一样的),但C标准一般不需要它(如果标准的作者想要做出这种保证,他们会有).例如,一个'double`必须是8字节对齐的机器可能合理地使用指针值的*lower*`N-3`位来处理内存中的`double`s - 在这样的机器上,转换`double*`来往`void*`需要换班. (2认同)