使用C中的memcpy访问Struct成员

时间:2015-04-09 23:10:31

标签: c struct

我有这样的结构:

struct x{
int a;
int b;
int c;
}

我有一个这样的数组:

unsigned char bytes[8];
bytes[0] = 1
bytes[1] = 128
bytes[2] = 0
bytes[3] = 0
bytes[4] = 255
bytes[5] = 255
bytes[6] = 0
bytes[7] = 0

我想在struct element" a",bytes [4]到struct [6]中将字节[0]复制到struct element" b" struct element" c"中的字节[7]。我必须使用memcpy。 我怎样才能做到这一点?请帮忙。

我的尝试:

struct x test;
memcpy( &test.a, bytes, 4);
memcpy( &test.b, bytes + 4, 3);
memcpy( &test.c, bytes + 7, 1);

但是每次运行它都会显示不同的结果。

1 个答案:

答案 0 :(得分:3)

在您的代码中,您不会初始化test。所以最终发生的事情是:

  • 这些字段最初有未定义的("垃圾")数据
  • 您只部分写字段

例如,如果你memcpy( &test.b, bytes + 4, 3); sizeof(int) == 4,那么你很可能只写3个字节,因此一个字节未定义

尝试一些简单的方法,比如初始化对象:

struct x test = {0};