繁体   English   中英

使用C中的memcpy访问Struct成员

[英]Accessing Struct members using memcpy in C

我有这样的结构:

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 [0]中的bytes [0]复制到字节[3],将struct [b]中的bytes [4]复制到字节[6],将结构元素“c”中的bytes [7]复制。 我必须使用memcpy。 我怎样才能做到这一点? 请帮忙。

我的尝试:

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

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

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

  • 这些字段最初具有未定义(“垃圾”)数据
  • 您只能部分写入字段

例如,当你做memcpy( &test.b, bytes + 4, 3); 如果你有sizeof(int) == 4 (可能)你最终只写3个字节,从而留下一个未定义的字节

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

struct x test = {0};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM