【发布时间】:2010-09-22 18:10:54
【问题描述】:
struct MyRect
{
int x, y, cx, cy;
char name[100];
};
int main()
{
MyRect mr;
mr.x = 100;
mr.y = 150;
mr.cx = 600;
mr.cy = 50;
strcpy(mr.name, "Rectangle1");
MyRect* ptr;
{
unsigned char bytes[256];
memcpy(bytes, &mr, 256);
ptr = (MyRect*)bytes;
}
printf("X = %d\nY = %d\nCX = %d\nCY = %d\nNAME = %s\n",
ptr->x, ptr->y, ptr->cx, ptr->cy, ptr->name);
return 0;
}
我只是在测试如何将结构/类放入字节数组中,当它编译和工作时我很惊讶,printf 打印了我在 mr 变量中设置的所有值。
对“ptr”到底指的是什么有点困惑?它是否在某处为 ptr 分配了内存?
【问题讨论】:
-
那么是否可以使用不同的方法通过字节数组传递任何数据,而不会出现未定义的行为?
-
hmm 只是想创建一个变量 MyRect 而不是指针,而不是 ptr = (MyRect*)bytes;复制 = (MyRect)bytes;然后当我超出范围或进入不同的功能时,这会保证数据的副本吗?所以我可以做一些事情,比如通过 TCP 通过套接字发送我自己的类/结构