*(DWORD_PTR*)&FunctionA = FunctionB( var1, var2, etc...);
这段代码是什么意思?它有什么作用?
我试着用谷歌搜索,但我不知道该用什么词。
前面的代码中有:
BOOL (WINAPI * FunctionA) (var1, var2, etc...) = NULL;
它标识“FunctionA”是什么。
最佳答案
我假设是 *(DWORD_PTR*)&functionA
部分让您感到困惑?
让我们把它分解成几个部分。让我们从 &functionA
开始。它获取 functionA
的地址(无论是什么)并返回指向它的指针。
然后我们有 (DWORD_PTR*)
将指向 functionA
的指针转换为指向 DWORD_PTR
的指针。
最后是单独的 *
开头,它是解引用运算符,它接受一个指针并为您提供 if 指向的值。
与函数调用放在一起,它只是将调用functionB
的结果赋值给变量functionA
。
我只是在这里猜测,但有可能 functionB
以某种通用方式返回指向函数的指针(我猜是 DWORD_PTR
),然后将其分配给变量 functionA
,它可能具有指向函数的类型指针。转换和取地址和取消引用运算符是因为 functionB
的返回类型。 我猜。没有更多信息或上下文,就无法确定。
关于c - 什么 *(DWORD_PTR*)&functionA = functionB( var1, var2);做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39038232/