如何在C中连接两个数组?

时间:2009-11-08 11:20:09

标签: c algorithm arrays concatenation

如何连接两个数组以获得包含两个原始数组元素的单个数组?

1 个答案:

答案 0 :(得分:26)

C中的数组只是一个连续的内存区域,指向它们的开始*。因此合并它们涉及:

  1. 查找数组A和B的长度,(您可能需要知道元素的数量和每个元素的sizeof
  2. 分配(malloc)一个大小为A + B的新数组C.
  3. 将内存从A复制(memcpy
  4. 将内存从B复制到C +长度A(见1)。
  5. 您可能还需要取消分配(free)A和B的内存。
  6. 请注意,这是一项昂贵的操作,但这是基本理论。如果您使用的是提供抽象的库,那么您可能会感觉更好。如果A和B比简单数组(例如排序数组)更复杂,则需要进行更智能的复制,然后执行步骤3和步骤4(参见:how do i merge two arrays having different values into one array)。


    • 虽然为了这个问题的目的,严格来说指针解释就足够了(并且为了安抚下面的评论者):C 具有数组的概念,可以在没有语法的情况下使用指针。然而,实现明智的是,C数组和连续的内存区域,指针足够接近,它们可以互换使用。