火山编程教程培训交流论坛-乐易网络

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

购买模块,定制软件,报名培训联系QQ 【会员必读】:如何绑定QQ来登陆论坛 【会员必读】:如何绑定微信来登陆论坛
【强烈推荐】《火山视窗0基础入门系列课程》【新手必读】火山中的错误代码大全【新手必读】火山视窗静态编译方案
《0基础x64位游戏内存辅助开发教程 》《64位某信Hook技术实战基础教程》《【免费】火山视窗汇编快速入门课程》
《火山视窗浏览器网页填表系列课程》《64位某信Hook技术实战进阶教程》《【免费】火山视窗Exui界面库讲解》
《火山视窗POST基础入门课程》《64位某信数据库操作课程》《火山视窗JavaScript加解密课程》
《火山视窗64位Hook技术培训课程》  
查看: 1461|回复: 0

[进阶学习] *(LPWORD) 和 *(WORD*) 的区别

[复制链接]
已绑定手机

签到天数: 273 天

[LV.8]以坛为家I

等级头衔

等級:管理员

头衔:最专业的易语言火山中文编程讲师

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分成就
火币
7356
贡献
6
主题
269
精华
2
威望
332
积分
810
注册时间
2024-10-3
最后登录
2025-7-10

勋章墙

微信认证用户论坛讲师最佳新人终身顶级VIP会员富翁会员

发表于 2025-3-6 07:56:22 | 显示全部楼层 |阅读模式

据统计90%查看本帖的人,都已经注册本站了哦

您需要 登录 才可以下载或查看,没有账号?立即注册

x

在C/C++中,*(LPWORD)lpAddress = 0x25FFU;*(WORD*)lpAddress = 0x25FFU; 实际上是执行相同操作的两种不同写法。让我们详细解释一下这两者之间的关系和差异:

类型定义

  • LPWORD:这是一个Windows特定的类型定义,通常在windows.h头文件中定义为typedef WORD *LPWORD;。也就是说,LPWORD实际上是指向WORD类型的指针。
  • WORD:也是一个Windows特定的类型定义,通常表示一个16位无符号整数(typedef unsigned short WORD;)。

表达式的等价性

  • *`(LPWORD)lpAddress**:这里首先将lpAddress(一个DWORD64类型的变量,即64位地址)强制转换为LPWORD(指向WORD`的指针),然后解引用该指针以访问或修改其指向的值。
  • *(WORD*)lpAddress:同样地,这里将lpAddress强制转换为指向WORD的指针,然后解引用该指针来访问或修改其指向的值。

因此,从功能上看,*(LPWORD)lpAddress = 0x25FFU;*(WORD*)lpAddress = 0x25FFU; 是完全等价的,都会将0x25FF这个值写入到lpAddress所指向的内存位置开始的两个字节中。

示例代码对比

// 使用 LPWORD
*(LPWORD)lpAddress = 0x25FFU;

// 使用 WORD*
*(WORD*)lpAddress = 0x25FFU;

两者在编译时会生成相同的机器码,并且行为也是一致的。

需要注意的地方

尽管这两种写法在功能上是等价的,但在实际编程中选择哪种方式主要取决于编码风格和个人或团队的习惯:

  • 使用LPWORD:这种写法更符合Windows API的风格,如果你正在编写与Windows平台紧密相关的代码,使用LPWORD可能使代码更具一致性和可读性。
  • *直接使用`WORD`**:这种方式更加通用,不依赖于Windows特定的类型定义,适合跨平台开发或者希望代码更加简洁的情况。

总结

可以使用 *(WORD*)lpAddress = 0x25FFU; 替换 *(LPWORD)lpAddress = 0x25FFU;,它们在功能上是等价的,都能达到同样的效果。选择哪一种写法更多是基于个人或项目的编码标准和偏好。确保你理解了这些类型的含义,并根据具体需求做出选择即可。

其他类型也是同样的意思

回复

使用道具 举报

快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|火山编程教程培训交流论坛-乐易网络 ( 湘ICP备19007035号 )

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表本站立场!

GMT+8, 2025-7-10 19:42 , Processed in 0.032031 second(s), 44 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表