C相当于Java的System.arraycopy

前端之家收集整理的这篇文章主要介绍了C相当于Java的System.arraycopy前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试移植一些大量使用System.arraycopy方法Java代码,并想知道C中是否存在等效代码.基本上我想要n个字节数组并将它们组合成一个大数组.每个初始数组都可以是可变长度的,所以我不想经历计算结束数组长度的箍,然后一次填充整个数组一个位置,因为这感觉相当慢,我敢肯定这个操作已经优化.但是,我找不到这个优化是什么(虽然我可能会使它变得比它应该更复杂).

这里有一些伪(Java)代码来说明我想要做的事情.

byte[] a = new byte[]{0x00,0x01,0x02};
byte[] b = new byte[][0x03,0x04,0x05];
byte[] ab = new byte[a.length+b.length];
System.arraycopy(ab,a,a.length);
System.arraycopy(ab,a.length+1,b,b.length);
//Now,I would expect ab to look like {0x00,0x02,0x03,0x05}

就像我说的那样,这在C语言中可能很简单,但我会做很多次,并希望确保我尽可能高效地完成它.

解决方法

给定a_len和b_len(包含a和b的字节长度),以及足以容纳两个数组的dst缓冲区,可以使用memcpy.注意:这还取决于dst被声明为指向字节大小数据的指针.
memcpy( dst,a_len );
memcpy( dst+a_len,b_len );

这适用于原始类型(因为它看起来像是在复制字节数组)…如果需要复制对象,请查看std :: copy<>().

猜你在找的C&C++相关文章