这样使用memcpy
是否正确?
unsigned char *ptr = mem;
struct st st1[3];
for (int i = 0; i < 3; i++) {
memcpy(&st1[i], ptr + sizeof(st) * i, sizeof(st));
}
如果不是,请考虑这个例子如何正确使用它?
答案 0 :(得分:0)
如果mem
实际指向构成struct st
的有效表示的字节,那么此代码是正确的,除了sizeof(st)
应该是sizeof(struct st)
或{{1 }}。但是,由于这三个块是连续的,您可以在一个副本中完成所有操作:
sizeof st1[i]
如果memcpy(&st1, ptr, sizeof st1);
没有指向这样的字节,则整个方法都不起作用。