char *强制转换成结构体遇到的问题请教。
[code=C/C++][/code]#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#pragma pack(1)
typedef struct
{
char name[1];
}next_t;
typedef struct
{
charlen;
next_t *InfoS;
}Info_t;
int cstringTostruct(char *test)
{
int i = 0;
int InfoLen = sizeof(next_t);
Info_t *Temp1 = (Info_t *)test;
int len = Temp1->len;
printf("%x\t",test[1]);
Temp1->InfoS = (next_t *)malloc(sizeof(next_t)*len); //执行这句话后。这个数据内容就变了。奇怪
memcpy(Temp1->InfoS[0].name,"1",1);
//for(int i=0; i<len; i++)
//{
//memcpy(Temp1->InfoS[i].name,&test[1+(i*InfoLen)],len);
// }
printf("%x\t",Temp1->InfoS->name);
printf("%x\t",test[1]);// 执行上面那个申请内存空间后,这个值都变了。奇怪return 1;
}
void main()
{
char sz[2048] = {1};
memset(sz,0x11,sizeof(sz));
memcpy(&[1],"1",1);
cstringTostruct(sz);
}
[解决办法]
你把内存都自己在纸上画一下(以字节为单位)就清楚了,不用考虑字节序问题