Если вы хотите «вставить» новые элементы в ваш массив, вам нужно освободить место для него. Это означает, что вам нужно переместить последние элементы на один шаг «вверх» в массиве.
Вы можете сделать это, используя al oop подобно
for (size_t i = 79; // Index of last element
i > 2; // The index of the element you want to insert *before*
++i)
{
myarray[i] = myarray[i - 1]; // Move previous element up one step
}
Тогда вы можете " вставить «новое значение в требуемую позицию
myarray[2] = new_value;
Вместо явного l oop вы также можете использовать memmove
:
// Move element 2 to become element 3, element 3 will become element 4, etc.
memmove(&myarray[3], &myarray[2], sizeof myarray - sizeof myarray[0] * 2);
myarray[2] = new_value;
[Обратите внимание, что вышеупомянутый memmove
вызов написан без тестирования, я мог ошибиться в размере]
Независимо от того, что вы делаете, явный l oop или вызов memmove
, вы потеряете последний элемент в массиве (по индексу 79
для массива из 80 элементов).
Если вы собираетесь многократно выполнять вставки, или если вы если вы не хотите потерять какие-либо элементы, то массив, вероятно, имеет неправильный тип контейнера. Связанный список будет намного лучше.