Удалить все элементы из массива
Я пытаюсь удалить все данные из массива.
Пример:
У меня есть arr[5,3,2]
, и я хочу полностью очистить массив и закончить с таким массивом, как этот arr[]
, готовым добавлять новые значения. Как мне это сделать? Заранее спасибо.
@imTDB, 👍0
Обсуждение1 ответ
Самый простой способ — не создавать новый (динамический) массив каждый раз, когда он вам нужен, а создавать один массив (как вы, вероятно, делали). Однако массив всегда имеет фиксированную длину, которая определяется во время объявления. Простой способ обозначить, что, например, заполнены только первые 10 элементов, — это создать целочисленную переменную со значением 10, что означает, что из массива (например, int myArray[20] сохраняются только первые 10 значений. Всякий раз, когда вы добавьте новое значение в массив, используйте
myArray[filledSize++] = newValue;
Это добавит новое значение в элемент массива [filledSize] и увеличит fillSize. Вы можете добавить защиту, согласно которой fillSize никогда не должен превышать размер массива.
Чтобы очистить массив, вы просто используете
filledSize = 0;
И всякий раз, когда вы перебираете используемый массив
for (int elem = 0; elem < fillSize; elem++) { myArray[elem] ...
Однако во многих случаях вам нужен кольцевой буфер, я не буду подробно останавливаться на этом, но, возможно, вы сможете проверить это и посмотреть, подходит ли это больше в вашем случае.
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Объявление и использование массива структур в Arduino
- Поддерживает ли Arduino C++ динамические массивы объектов ?
- Почему структура переменного размера не компилируется в Arduino IDE?
- Получена ошибка недопустимого преобразования из 'const char*' в 'const uint8_t*
- Как масштабировать растровое изображение (массив uint8_t) в Arduino?
- Как я могу присвоить значение массива символов массиву uint8_t?
- Объединить два 8-битных массива в один 16-битный массив
массив — это не набор картонных коробок, которые нужно опустошить перед сохранением новых данных…… чего вы пытаетесь добиться?, @jsotola
это звучит почти как школьное задание..... оно такое?, @jsotola
https://majko.co.uk/blog/arrays-pointers-what-c, @Majenko
Массивы имеют фиксированный размер, изменить который можно только путем динамического создания нового массива нужного размера. Но в большинстве случаев это не очень хорошая идея для Arduino. Так что же вы подразумеваете под «удалением всех данных»? Вы можете перезаписать данные нулями., @chrisl