TC官方合作论坛

 找回密码
 立即注册
查看: 3692|回复: 10

[学习心得] 【类人猿TC内存探讨】 第六讲:结构体 内存认识

  [复制链接]
发表于 2017-8-9 23:41:16 | 显示全部楼层 |阅读模式
本帖最后由 类人猿 于 2017-8-28 14:12 编辑

<<<<<<技术探讨,欢迎大神指导!<<<<<<<<技术Q:578052137  技术群:128262077
    现在跟大家讲一下结构体内存表现形式。
       结构体这个概念在TC里面是没有的,但是在其他编程语言是很普遍。我们在分析游戏数据、调用系统API和编写内存脚本的时候经常用到的。作为知识的扩展这个是必须要学习的,前提你要看明白我之前指针帖子。学会这个你会走得更加远。好了,首先我们看一下C语言结构体的一个简单定义,这个只需要理解即可。

struct st
{     
   int a ;         
  int b ;         
  char *c = "hello";
}
//这里面st就是个结构,struct是结构体的意思。 st这个结构里面包含第一个数据int a,第二个 int b,第三个 float c
//下面就是赋值初始化
st st1;
st1.a=5;
st1.b=6;
st1.c="hello";



    既然到这里,同学们是不是感觉这个像数组呢?其实还真的跟数组有点像,但是也不一样数组只有一种数据类型,比如:
   
变量 aa = 数组("a","b","c","d")

    aa所里所有元素都是同一种字符串类型,上面的st可以支持多种类型的数据。这个是根本的区别。

     好了,说了那么多现在也应该进入到正题了。我们分析TC结构体内存如何分配的。

    1.首先我新建一个按钮,并且上代码:

功能 按钮0_点击()
    //这里添加你要执行的代码
    变量 point = 数组("x"=数组("int"="1","value"=100),"z"=数组("float"="10","value"="55.6665"),"y"=数组("char"="1000","value"="请问这个是汉子妈"))
    变量 address = 结构体申请内存(point)
    address=字符串格式化("十六进制:%x",address)
    消息框("申请到地址:"& address)

结束

    2.这个是点击按钮,打印出申请结构体空间地址

   3.用od附加进程,转到该地址,查看数据

   4. 我们分析到我们写结构体三个元素,自己用不同类型进行查看

   5.下面这个是用字符形式,我们看到里面的字符串,说明这个结构体申请空间是正确的。




好了,不明白的同学留言,谢谢各位支持,要不都快心灰意冷了。



本帖子中包含更多资源

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

x

评分

参与人数 4威望 +22 金币 +32 收起 理由
yuzhiboqianyuan + 2 + 2 感谢分享!
不明 + 10 楼主辛苦了!
轩辕迟雪 + 10 + 10 赞一个!
言术 + 10 + 10 支持

查看全部评分

回复

使用道具 举报

发表于 2017-8-10 00:05:54 | 显示全部楼层
好贴,过来支持
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-10 00:46:32 | 显示全部楼层
感谢楼上思想者支持!
回复 支持 反对

使用道具 举报

发表于 2017-8-10 11:21:57 | 显示全部楼层
有些东西真的只是一层纸,点破了就觉得很简单,关键是有没有这么一个人来点破,感谢类人猿的无私奉献!!!
回复 支持 反对

使用道具 举报

发表于 2017-8-10 14:24:20 | 显示全部楼层
支持一下,这么系统的,浅显易懂的教程难得
回复 支持 反对

使用道具 举报

发表于 2017-8-10 15:03:41 | 显示全部楼层
学习学习
回复

使用道具 举报

发表于 2017-8-11 01:08:30 | 显示全部楼层
回复

使用道具 举报

发表于 2017-8-28 23:01:34 | 显示全部楼层
支持一下
回复

使用道具 举报

发表于 2017-9-11 17:52:27 | 显示全部楼层
支持一下,正在学习中
回复 支持 反对

使用道具 举报

发表于 2018-2-19 12:39:18 | 显示全部楼层
大神

2.ZJ信息结构
typedef struct _personinfow
{
        wchar_t name[16];
        wchar_t **Code[2];
        wchar_t **[2];
        wchar_t ethnicCode[4];
        wchar_t ethnic[10];
        wchar_t birthDate[10];
        wchar_t address[36];
        wchar_t idNumber[20];
        wchar_t issueAuthority[16];
        wchar_t validTermBegin[10];
        wchar_t validTermEnd[10];
        wchar_t appendInfo[36];
}PERSONINFOW,*PPERSONINFOW;

这种咋声明?
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-4-29 08:27 , Processed in 0.048351 second(s), 24 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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