░▒▓有什么简便的办法把结构体中的数据放到char型数组里?? 一个一个的往里放太费劲,有没有简便的办法?buf = (char*)&stru;这样的办法不可行,结构体的成员内存中不保证连续 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有计算机不怕你Loop它,尽管弄:) 用指针偏移。多次Memcpy不连续的地方偏移过去即可 //获取从m开始的内存偏移量f#define OFFSET_MEM(m,f) (void*)(((unsigned long (m)) + (unsigned long)(f)))//拷贝内存,并偏移原始内存#define memcpy_off(dest,src,len) (memcpy((void*)(dest),(void*)src,(size_t)len) , OFFSET_MEM(dest,len) ) 结构体在内存中的确是不连续的。struct A{ char a; int b; char c; char d;}; A a; a.a = 1;a.b = 2;a.c = 3;a.d = 4; ……如上图,如果取这个结构体对象的地址,指针往后移一个字节,取出的是cc 这个问题我是没什么好办法。一个一个的Copy吧 1.所谓结构体在内存里不连续可能是字节对齐问题,可以用#pragma pack(push,1)设置一下2.不知道为啥要拷贝到char数组里。如果可以的话,其实可以考虑先分配一个char的数组,然后用reinterpret_cast<结构体类型指针>(char数组)来转换,这样的得到的结果就是一个结构体的指针,可以直接操作结构体,也不用再拷贝到char数组了。 一个有关问题,用vs2010开发的mfc单文档office Ribbon类型程序,关闭类视图、属性页、输出窗口,就再也打不开了 VSS的服务端和客户端能否配置在同一台机器上?如何实现? 各位帮我分析一下这几行代码 多个进程能否同时等待到一个共享信号??在线等!! 如何使向下还原按钮失效 新手问题 串口程序中多线程的问题~在线~ 如何在程序中调用其他文件?? 如何调用多个对话框 大家来捡分啊!! 如何向qq的验证窗口发送文本、数字 怎么让编辑框在达到限定长度后自动跳到下一个编辑框啊
计算机不怕你Loop它,尽管弄:)
多次Memcpy
不连续的地方偏移过去即可
#define OFFSET_MEM(m,f) (void*)(((unsigned long (m)) + (unsigned long)(f)))//拷贝内存,并偏移原始内存
#define memcpy_off(dest,src,len) (memcpy((void*)(dest),(void*)src,(size_t)len) , OFFSET_MEM(dest,len) )
结构体在内存中的确是不连续的。struct A
{
char a;
int b;
char c;
char d;
}; A a;
a.a = 1;a.b = 2;a.c = 3;a.d = 4;
……
如上图,如果取这个结构体对象的地址,指针往后移一个字节,取出的是cc
2.不知道为啥要拷贝到char数组里。如果可以的话,其实可以考虑先分配一个char的数组,然后用reinterpret_cast<结构体类型指针>(char数组)来转换,这样的得到的结果就是一个结构体的指针,可以直接操作结构体,也不用再拷贝到char数组了。