结构体的指针转换成void*的时候……数据丢失?
问题如下:
比如结构体的定义
typedef struct tag_st
{
char id[10];
float fa[2];
}ST;
我在程序里面这样使用的
ST * P=(STU *)malloc(sizeof(STU));
strcpy(P->id,"hello!");
P->fa[0]=1.1;
P->fa[1]=2.1;
ST * Q=(STU *)malloc(sizeof(STU));
strcpy(Q->id,"world!");
Q->fa[0]=3.1;
Q->fa[1]=4.1;
void ** plink=(void **)P;
*plink =(void *)Q; //执行完此句之后,发现p当中的id变成了垃圾字符,而fa中的数据完整无损? 为什么?