Добавить элемент в массив си
Здравствуйте, попался такой кусочек кода, объясните пожалуйста. Массив статический, как добавляется элемент?
Отслеживать
77k 6 6 золотых знаков 56 56 серебряных знаков 123 123 бронзовых знака
задан 3 мар 2022 в 13:25
15 1 1 серебряный знак 8 8 бронзовых знаков
Создается новый массив на 1 элемент больше и в него переносятся элемента из старого массива
3 мар 2022 в 13:51
массив находиться в стеке рядом с другими переменными. при записывании данных за пределы выделенной памяти происходит порча данных и неопределённое поведение программы. Это происходит сразу j == 5 , A[j + 1] = A[j]; портит не свою память, прочитывая опять не свою память. Напоминаю, элементы в массиве находятся по индексам 0 .. 4 , а тут делается первое присваивание A[6] = A[5]; совсем не в тему.
3 мар 2022 в 15:21
Ну это понятно, но ведь работает. Не в каждом компиляторе правда, но работает. Вот мне и интересно — почему?
Вставка элемента в массив
Требуется добавить элемент в произвольное место массива.
Алгоритм решения задачи:
- Задаем длину массива на один элемент больше, чем он будет заполнен в начале.
- Выясняем значение и позицию добавляемого элемента
- Все элементы до указанной позиции сдвигаем на один назад.
- Присваиваем по указанному индексу (позиции) значение.
- Остальная (передняя) часть массива не изменяется.
Программа на языке Паскаль:
const n = 6; var arr: array[1..n] of integer; i, j, num, id: integer; begin writeln('Заполните массив: '); for i := 1 to n - 1 do readln(arr[i]); write('Ваш массив: '); for i := 1 to n - 1 do write(arr[i]:5); writeln; write('Укажите еще один элемент: '); readln(num); write('Позиция в массиве: '); readln(id); for i := n - 1 downto id do arr[i+1] := arr[i]; arr[id] := num; write(' Ваш массив: '); for i := 1 to n do write(arr[i]:5); writeln; end.
Как добавить элемент в конец массива java
В Java массивы имеют фиксированную длину, и вы не можете добавить новый элемент в конец массива. Однако, вы можете создать новый массив с увеличенной длиной и скопировать в него все элементы из старого массива, а затем добавить новый элемент в конец нового массива.
Вот пример кода, который добавляет элемент в конец массива:
// Исходный массив int[] arr = 1, 2, 3>; // Создаем новый массив с длиной на 1 больше исходного массива int[] newArr = new int[arr.length + 1]; // Копируем все элементы из исходного массива в новый массив for (int i = 0; i arr.length; i++) newArr[i] = arr[i]; > // Добавляем новый элемент в конец нового массива newArr[newArr.length - 1] = 4; // Используем новый массив вместо старого массива arr = newArr; // [1, 2, 3, 4]
Array.prototype.push()
Метод push() добавляет один или более элементов в конец массива и возвращает новую длину массива.
Синтаксис
arr.push(element1, . elementN)
Параметры
Элементы, добавляемые в конец массива.
Возвращаемое значение
Новое значение свойства length объекта, для которого был вызван данный метод.
Описание
Метод push присоединяет значения к массиву.
Метод push не является привязанным к типу; этот метод может быть вызван или применён к объектам, напоминающим массив. Метод опирается на свойство length для определения места вставки значений. Если свойство length не может быть преобразовано в число, будет использовать индекс 0. Сюда входит случай несуществования свойства length , в этом случае оно также будет создано.
Единственными родными массивоподобными объектами являются строки, хотя к ним он не может быть применён, поскольку строки являются неизменяемыми.
Примеры
Пример: добавление элементов в массив
Следующий код создаёт массив sports , содержащий два элемента, а затем добавляет к нему ещё два элемента. Переменная total будет содержать новую длину массива.
var sports = ["футбол", "бейсбол"]; var total = sports.push("американский футбол", "плавание"); console.log(sports); // ['футбол', 'бейсбол', 'американский футбол', 'плавание'] console.log(total); // 4
Пример: слияние двух массивов
В этом примере используется функция apply() для помещения всех элементов из второго массива в первый.
var vegetables = ["пастернак", "картошка"]; var moreVegs = ["сельдерей", "свёкла"]; // Сливает второй массив с первым // Эквивалентно вызову vegetables.push('сельдерей', 'свёкла'); Array.prototype.push.apply(vegetables, moreVegs); console.log(vegetables); // ['пастернак', 'картошка', 'сельдерей', 'свёкла']
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-array.prototype.push |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Array.prototype.pop()
- Array.prototype.shift()
- Array.prototype.unshift()
- Array.prototype.concat()
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 20 янв. 2024 г. by MDN contributors.
Your blueprint for a better internet.