У меня есть массив, который содержит историю значений, и при добавлении нового значения мне нужно сдвинуть все предыдущие значения на одну позицию влево, чтобы потерять самое старое значение и освободить место для следующего.Лучший способ сдвинуть массив в C?
я могу думать о двух способов сделать это, используя memmove:
memmove(&arr[0], &arr[1], sizeof(arr) - sizeof(*arr));
Или путем замены указателей:
for (i = 0; i != sizeof(arr) - 1; i++) {
*(arr + i) = *(arr + i + 1);
}
Есть ли разница в производительности между этими двумя методами, и если нет, о чем можно было бы посоветовать?
Вы считали, что не используете массив для этого или это не опция? – nic
@nic Мне нужно отслеживать последние значения X, поэтому я не могу думать о более логичном способе их хранения, кроме массива. – Muis
Используйте очередь (вы все равно можете использовать массив для ее реализации) и избегайте копирования памяти. http://www.thelearningpoint.net/computer-science/data-structures-queues--with-c-program-source-code –