VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 323|回复: 3

[求助] 关于解析数据结构的问题

[复制链接]
08_avatar_middle
在线会员 fjqisba 发表于 7 天前 | 显示全部楼层 |阅读模式
3驿站币
现在遇到实际情况是这样的,已知一个数据的内存地址,需要去解析其中的Key数据,这个数据的空间分布大致如下(按顺序排列):

DWORD num1;         //Key1的个数
DWORD Key1[0];
DWORD Key1[1];
......
DWORD Key1[num1];
DWORD num2;        //Key2的个数
DWORD Key2[0];
DWORD Key2[1];
......
DWORD Key2[num2];


很明显这是一个有规律的数据结构,理想中应该是这么解析的
struct MyStruct
{
        DWORD num1;
        DWORD Key1[num1];
        DWORD num2;
        DWORD Key2[num2];
};

这样我就能很方面地提取出来数据
例如pMyStruct->Key1[1],pMyStruct->Key2[5];

然而实际上这样是不行的.
似乎要用到链表才能解决.
否则只能手动解析了...不能用完美的形式来表示.

除了使用链表(太麻烦的样子)或者手动解析之外,先来问问还有没有什么好办法呢?






上一篇:文件释放
下一篇:c++管理员运行cmd怎么写

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 7 天前 | 显示全部楼层
本身你使用这种方法去定义 MyStruct 就是错误的:
struct MyStruct
{
        DWORD num1;
        DWORD Key1[num1];
        DWORD num2;
        DWORD Key2[num2];
};

DWORD Key1[num1]; 要求 num1 必须是个已知的值,但是你现在使用的是个普通的变量,所以连编译都通不过。你可以这样定义:
struct MyStruct
{
        DWORD num1;
        DWORD *Key1;
        DWORD num2;
        DWORD *Key2;
};

让 Key1 和 Key2 都变成指针,这样直接让他们只想内存的那个地址就可以了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

08_avatar_middle
ico_lz  楼主| fjqisba 发表于 7 天前 | 显示全部楼层
上面那个问题已经解决了,不管怎样我似乎都要手动解析的样子.......
可以使用这种方法
struct MyStruct
{
        DWORD num1;
        DWORD *Key1;
        DWORD num2;
        DWORD *Key2;
};

或者这种方法
struct MyStruct
{
        DWORD num1;
        vector<DWORD> Key1;
        DWORD num2;
        vector<DWORD> Key2;
};

这样我要使用数据的时候,可以用*(Key1+x)或者Key1[x]表示
现在还有一个小问题,如果要频繁使用这些数据,这两个哪种方法效率更好一点?
关于解析数据结构的问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

30_avatar_middle
在线会员 erhuasu 发表于 昨天 11:54 | 显示全部楼层
为什么不行,能说清楚一点么

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-9-20 19:36

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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