精易论坛

标题: 取变量地址 自定义数据结构 [打印本页]

作者: Tz纸鹤    时间: 2017-4-27 12:15
标题: 取变量地址 自定义数据结构
  
数据类型名公开备 注
模块信息 
成员名类 型传址数组备 注
dwSize整数型 结构大小   548
th32ModuleID整数型 模块标识符
th32ProcessID整数型 进程标识符
GlblcntUsage整数型 模块数
ProccntUsage整数型 进程数
modBaseAddr整数型 模块基址
modBaseSize整数型 模块基址大小
hModule整数型 模块句柄
szModule字节型256模块名称
szExePath字节型260文件路径


  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
模块模块信息 
a整数型 
b整数型 
a = 取变量地址 (模块.szExePath)
b = 取变量地址 (模块.szModule)
调试输出 (a, b)
调试输出 (a - b)


i支持库列表   支持库注释   
spec特殊功能支持库


输出结构是
* 6241596 | 6241592
* 4.000000


a - b = 4? exm,不应该是256?




补充内容 (2017-4-27 12:16):
不知道为什么乱码。。。
a = 取变量地址 (模块.szExePath)
b = 取变量地址 (模块.szModule)

作者: web11234    时间: 2017-4-27 12:15
我来告诉你实情

虽然你 (模块.szExePath)这个是字节数组  但是你要了解一点  他是个地址   32位地址是4个字节表示的  

例如:模块.szExePath  地址在 0x00129338   字节型  只是这个地址下的数据是一个字节   数组就是连续的地址下的都是字节楼
例如:
0x00129338      25
0x00129339      128
0x00129340      255
而你取的是地址  也就等于0x00129338这个楼   这个就是4个字节  还有数据结构成员地址都是连续的 所以 他们的地址就差4个字节  


补充内容 (2017-4-27 16:31):
我说错了 抱歉啊  我又误人子弟了  
他那个字节数组是指针的指针


作者: C。    时间: 2017-4-27 12:27
AB都是整数型,你输出的调试不是4是多少?6241596-6241592=256,恕我直言,你数学老师棺材板我按不住了
作者: Tz纸鹤    时间: 2017-4-27 12:31
C。 发表于 2017-4-27 12:27
AB都是整数型,你输出的调试不是4是多少?6241596-6241592=256,恕我直言,你数学老师棺材板我按不住了

你没看结构体? 字节型[256]啊 大哥, szExePath - szModule 应该是等于256的
作者: C。    时间: 2017-4-27 12:46
Tz纸鹤 发表于 2017-4-27 12:31
你没看结构体? 字节型[256]啊 大哥, szExePath - szModule 应该是等于256的

可你声明的变量AB是整数型,你申明字节型看看啊
作者: Tz纸鹤    时间: 2017-4-27 16:27
web11234 发表于 2017-4-27 16:10
我来告诉你实情

虽然你 (模块.szExePath)这个是字节数组  但是你要了解一点  他是个地址   32位地址是4 ...

算了,不打算搞了,放弃治疗了,c++的数据结构排布和易语言不同,毕竟易语言封装过,我感觉易语言有很多数据结构都是用类来管理的




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4