鱼C论坛

 找回密码
 立即注册
查看: 2342|回复: 6

C语言在结构体地址相加的时候是不是一定要在前面加个DWORD

[复制链接]
发表于 2014-4-16 21:48:01 | 显示全部楼层 |阅读模式
5鱼币
PIMAGE_DOS_HEADER M_PImage_Dos_Harder=NULL;
PIMAGE_NT_HEADERS M_PImage_Nt_Headers=NULL;
M_PImage_Dos_Harder=(PIMAGE_DOS_HEADER)M_FileMapAddress;
M_PImage_Nt_Headers=PIMAGE_NT_HEADERS((DWORD)M_PImage_Dos_Harder+M_PImage_Dos_Harder->e_lfanew);
为什么在这句代码中一定要把M_PImage_Dos_Harder强制转换成DWORD类型,要是不转换相加后的地址就会出错,要是转换为WORD类型,得到的结果就是M_PImage_Dos_Harder->e_lfanew本身的值。是不是一个结构体地址再相加另一个值时要先在那个结构体地址前面强制转换为DWORD类型?这个问题是看了小甲鱼PE工具篇后的问题,实在搞不懂,求大虾解惑。

最佳答案

查看完整内容

DWORD * p = 4; DWORD c = (DWORD)p; .....所以c.....也等于p的地址。。。 也就是说。。。 DWORD d =(DWORD)* (DWORD*)c; ......d其实等于4 看懂了这个。。你就懂了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-16 21:48:02 | 显示全部楼层
DWORD * p = 4;
DWORD c = (DWORD)p;
.....所以c.....也等于p的地址。。。
也就是说。。。
DWORD d =(DWORD)* (DWORD*)c;
......d其实等于4

看懂了这个。。你就懂了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-16 21:48:43 | 显示全部楼层
知道的大虾速度回答下,小弟只有这么点鱼币了,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-18 19:12:29 | 显示全部楼层

那是不是一个结构体地址再相加另一个值时要先在那个结构体地址前面强制转换为DWORD类型?我是菜鸟,高手指教一下~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-18 20:03:11 | 显示全部楼层
dnf123021 发表于 2014-4-18 19:12
那是不是一个结构体地址再相加另一个值时要先在那个结构体地址前面强制转换为DWORD类型?我是菜鸟,高手指 ...

是        ~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-18 20:37:13 | 显示全部楼层
M_PImage_Nt_Headers=(PIMAGE_NT_HEADERS)((DWORD)M_PImage_Dos_Harder+M_PImage_Dos_Harder->e_lfanew);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-21 20:26:27 | 显示全部楼层
向往青莲 发表于 2014-4-18 20:03
是        ~~

兄弟谢了,鱼币给你~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 02:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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