【发布时间】:2013-01-23 22:31:25
【问题描述】:
我需要在静态数组的 2 个元素之间插入元素。我已经编写了以下代码。如果我们有比这更高效的代码,请告诉我。
int main()
{
int a[4];
a[0] = 10;
a[1] = 20;
a[2] = 30;
int x = 15;
memcpy(a+2,a+1,2);
a[1] = x;
printf("%d",a[2]);
}
【问题讨论】:
-
IIRC,你不能在
memcpy中使用重叠的内存区域。 -
另外,您必须以 bytes 为单位传递大小
-
改用 memmove 来解决重叠问题。此外,您需要以字节为单位指定移动的长度,因此 2 * sizeof(a[0])
-
如果你在 16 个字节内移动 anything,效率是无关紧要的。无论如何,这将花费大约 0.000000001 秒。
-
@Mordachai 谢谢。你说的对。我现在用过 memmove。
标签: c