Перейти к содержимому

Как добавить элемент в массив

  • автор:

Добавить элемент в массив си

Здравствуйте, попался такой кусочек кода, объясните пожалуйста. Массив статический, как добавляется элемент?

Отслеживать
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

Ну это понятно, но ведь работает. Не в каждом компиляторе правда, но работает. Вот мне и интересно — почему?

Вставка элемента в массив

Требуется добавить элемент в произвольное место массива.

Алгоритм решения задачи:

  1. Задаем длину массива на один элемент больше, чем он будет заполнен в начале.
  2. Выясняем значение и позицию добавляемого элемента
  3. Все элементы до указанной позиции сдвигаем на один назад.
  4. Присваиваем по указанному индексу (позиции) значение.
  5. Остальная (передняя) часть массива не изменяется.

Программа на языке Паскаль:

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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *