如何连接两个数组以获得包含两个原始数组元素的单个数组?
最佳答案
C 中的数组只是一个连续的内存区域,带有一个指向它们起始位置的指针*。所以合并它们涉及:
- 找出数组 A 和 B 的长度,(您可能需要知道元素的数量和每个元素的
sizeof
) - 分配 (
malloc
) 一个大小为 A + B 的新数组 C。 - 将内存从A复制(
memcpy
)到C, - 将内存从 B 复制到 C + A 的长度(见 1)。
- 您可能还想取消分配(
释放
)A 和 B 的内存。
请注意,这是一个昂贵的操作,但这是基本理论。如果您使用的库提供了一些抽象,您可能会过得更好。如果 A 和 B 比简单数组(例如排序数组)更复杂,则您需要进行比第 3 步和第 4 步更智能的复制(参见:how do i merge two arrays having different values into one array)。
- 尽管出于这个问题的目的,指针解释就足够了,严格来说(并且为了安抚下面的评论者):C 有数组的概念,可以在没有语法的情况下使用的指针。然而,在实现方面,C 数组和连续的内存区域(带有指针)非常接近,它们可以并且经常可以互换使用。
关于c - 如何在 C 中连接两个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1696074/