struct   strOne{

char   c[2];
int   int1;
float   f2;

}

char   b[sizeof(strOne)];

怎么把它们互相转换?也就是说让struct变成char流存起来和   反过来调用出来struct?


struct   strOne   c;

memcpy(b,   &c,   sizeof(struct   strOne));
memcpy(&c,   b,   sizeof(b));

or

char   *p    =   (char  *)&c;
struct  strOne   *pp   =   (struct   strOne   *)b;

好多时候做数据需要用到结构体,有的时候结构体很大,还要把全部数据存储起来为列表的形式,这时候如果把每一项存储到数据库中就很麻烦,费事整理表格等协议,直接存储结构体到数据库,在需要读取历史数据时也读取为结构体形式,在使用结构体复现数据,很方便。 qt 5.7windows/linuxsqlite3直接上代码,存储部分和读取部分结构体自行定义创建 最近决定好好把C看下,虽然学过C++,但是对于C中的常用函数特别是内存管理的函数还不甚了解,刚开始的时候就遇到一个小问题==! 用 sizeof 看 struct 占用内存字节问题:  //sMem.c #include typedef struct TagS_A int i; char c; double d; char * t = ( char *) s_obj; strcpy(( char )& s_obj,t); Struct Char 之间可以相互 换,但是要注意内存对齐的问题。 对齐的简单办法,使用wsprintf(); QString qStr = "两袖清风"; QByteArray qByteArray = qStr.toUtf8(); char * cStr = qByteArray.data(); qDeb... 结构体自动化 换为 char 数组这个需求,来自于一个最近开发的一个项目,在项目开发过程中遇到一个小问题,需要将各种结构体拷贝到 char 数组中,这对于一个简单的结构体来说是很简单的事情,比如下面这个只有整形字段的结构体: struct A int a; int b; char buf[100]; A a = {1,2}; memcpy(buf, &a, sizeof(A)); 一句memcpy就能将结构体a拷贝到 char 数组中去了,直接通过memcpy拷... char *ch = "abcdefghijklmn1234567890"; char *chTest = new char [2048]; memset(chTest, 0, sizeof(chTest)); Test *t1 = new Test; QT 的信号槽可以传递int, short, double等c语言的常用类型的变量,也可以传递如QImage之类的 QT 支持 的类型。但是如何传递一个程序员自定义的结构体? 1)在定义结构体之后,要调用Q_DECLARE_METATYPE,向 QT 声明这个结构体 2)在main.cpp 中,用connect函数 将抛出此结构体的信号和接收此结构体的槽函数关联之前,要调用qRegisterMetaTy...