【发布时间】:2010-12-14 08:13:05
【问题描述】:
如何连接两个数组以获得包含两个原始数组元素的单个数组?
【问题讨论】:
-
是的...由于这两个答案似乎都是对“串联”解释的回应,并且 OP 没有返回澄清,我已经编辑了问题以反映这一点。
标签: c algorithm arrays concatenation
如何连接两个数组以获得包含两个原始数组元素的单个数组?
【问题讨论】:
标签: c algorithm arrays concatenation
C 中的数组只是一个连续的内存区域,带有指向它们的 start* 的指针。所以合并它们涉及:
sizeof)malloc) 大小为 A + B 的新数组 C。memcpy) 到 C,free) A 和 B 的内存。请注意,这是一项昂贵的操作,但这是基本理论。如果您使用提供一些抽象的库,您可能会更好。如果 A 和 B 比简单数组(例如排序数组)更复杂,则您需要在步骤 3 和 4 之后进行更智能的复制(请参阅:how do i merge two arrays having different values into one array)。
【讨论】:
int a[10] 时,我得到一个连续的内存区域,其中包含 10 个 int 并且没有任何指针。
a 是你的指针。您似乎在对其他答案的评论中意识到了这一点......
a 不是指针。 a 是一个数组。当数组类型衰减为指针类型时,结果指针只是一个中间临时值,与a无关。 Wnat 上面的帖子是不正确的,除非它专门讨论 malloced 数组。