gpt4 book ai didi

C - 使用指针向上移动数组元素

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:23 25 4
gpt4 key购买 nike

假设我想在 C 中执行以下操作。有没有一种方法可以使用指针更有效地执行此操作(只是出于兴趣,因为我正在学习 C)。谢谢!

int my_array[5];

my_array[0] = my_array[1];
my_array[1] = my_array[2];
my_array[2] = my_array[3];
my_array[3] = my_array[4];
my_array[4] = my_array[5];
my_array[5] = 0;

最佳答案

使用memmove

memmove(&my_array[0], &my_array[1], 5 * sizeof(my_array[0]));
my_array[5] = 0;

也许这是最有效的方式,因为在大多数情况下,memmove 是用特殊的机器代码实现的(例如 x86 的 rep movsd,或 SSE..)

(注意您不能使用memcpy,因为源和目标是重叠的。如果您使用memcpy,未定义的行为会出现上。)

如果你想通过指针手动复制,你可能需要这样:

int *p;
for (p = my_array; p < my_array + 5; p++)
*p = *(p + 1);
*p = 0;

关于C - 使用指针向上移动数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25578319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com