【问题标题】:What's the difference between (DWORD), *(DWORD*), and (DWORD*)? [closed](DWORD)、*(DWORD*) 和 (DWORD*) 之间有什么区别? [关闭]
【发布时间】:2013-12-11 17:17:47
【问题描述】:

标题中的问题也指定了...

(DWORD)、*(DWORD*) 和 (DWORD*) 有什么区别?

一个例子:

#include <windows.h>
#define playerpointer 0xABC12375 // example

int main()
{
    DWORD dwPlayerPtr = *(DWORD*)(playerpointer);
}

希望你能帮助我...

【问题讨论】:

  • 该示例与问题无关。你不明白什么区别?
  • 任何像样的 C 或 C++ 书籍都应该非常清楚地解释这一点 - 有一个 handy list 以防万一你没有。
  • 这三个你了解哪一个?你能解释一下你认为他们做了什么吗?如果你不知道他们中的一个或多个做什么,那就是你应该问的问题。
  • 逗号用于分隔列表,例如一、二、三。否则,你的问题毫无意义。

标签: c++ pointers dword


【解决方案1】:

DWORD 是一种 MS-Windows 数据类型。它被定义为

typedef unsigned long DWORD

(DWORD*) 是将值转换为指向 DWORD 的指针的强制转换。

*(DWORD*) 然后取消引用指向实际 DWORD 值的指针。

所以,在你上面的例子中,

DWORD dwPlayerPtr = *(DWORD*)(playerpointer);

如果我们翻译成“英语”,语句是说,获取存储在位置 0xABC12375 中的 DWORD 变量的值。

【讨论】:

  • 但是当你使用 (DWORD)*(DWORD*) 我的意思是当你使用 (DWORD) 2 次在一些黑客代码中像这样
猜你喜欢
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多