TC官方合作论坛

标题: 【类人猿TC内存探讨】 第六讲:结构体 内存认识 [打印本页]

作者: 类人猿    时间: 2017-8-9 23:41
标题: 【类人猿TC内存探讨】 第六讲:结构体 内存认识
本帖最后由 类人猿 于 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)

结束[attach]25354[/attach]

    2.这个是点击按钮,打印出申请结构体空间地址
[attach]25355[/attach]
   3.用od附加进程,转到该地址,查看数据
[attach]25356[/attach]
   4. 我们分析到我们写结构体三个元素,自己用不同类型进行查看
[attach]25357[/attach]
   5.下面这个是用字符形式,我们看到里面的字符串,说明这个结构体申请空间是正确的。

[attach]25358[/attach]


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




作者: 2576605471    时间: 2017-8-10 00:05
好贴,过来支持
作者: 类人猿    时间: 2017-8-10 00:46
感谢楼上思想者支持!
作者: 爱上老公    时间: 2017-8-10 11:21
有些东西真的只是一层纸,点破了就觉得很简单,关键是有没有这么一个人来点破,感谢类人猿的无私奉献!!!
作者: 花落莫相离    时间: 2017-8-10 14:24
支持一下,这么系统的,浅显易懂的教程难得
作者: 东月山    时间: 2017-8-10 15:03
学习学习
作者: sam7894604    时间: 2017-8-11 01:08

作者: myaoao    时间: 2017-8-28 23:01
支持一下
作者: tt22828    时间: 2017-9-11 17:52
支持一下,正在学习中
作者: rxuehao    时间: 2018-2-19 12:39
大神

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;

这种咋声明?
作者: 类人猿    时间: 2018-3-4 21:54
rxuehao 发表于 2018-2-19 12:39
大神

2.ZJ信息结构

一样可以的,申请内存段,把每一个成员大小定位即可的。TC支持 wchar类型的。




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1