Удалить все элементы из массива

Я пытаюсь удалить все данные из массива. Пример: У меня есть arr[5,3,2], и я хочу полностью очистить массив и закончить с таким массивом, как этот arr[], готовым добавлять новые значения. Как мне это сделать? Заранее спасибо.

, 👍0

Обсуждение

массив — это не набор картонных коробок, которые нужно опустошить перед сохранением новых данных…… чего вы пытаетесь добиться?, @jsotola

это звучит почти как школьное задание..... оно такое?, @jsotola

https://majko.co.uk/blog/arrays-pointers-what-c, @Majenko

Массивы имеют фиксированный размер, изменить который можно только путем динамического создания нового массива нужного размера. Но в большинстве случаев это не очень хорошая идея для Arduino. Так что же вы подразумеваете под «удалением всех данных»? Вы можете перезаписать данные нулями., @chrisl


1 ответ


1

Самый простой способ — не создавать новый (динамический) массив каждый раз, когда он вам нужен, а создавать один массив (как вы, вероятно, делали). Однако массив всегда имеет фиксированную длину, которая определяется во время объявления. Простой способ обозначить, что, например, заполнены только первые 10 элементов, — это создать целочисленную переменную со значением 10, что означает, что из массива (например, int myArray[20] сохраняются только первые 10 значений. Всякий раз, когда вы добавьте новое значение в массив, используйте

myArray[filledSize++] = newValue;

Это добавит новое значение в элемент массива [filledSize] и увеличит fillSize. Вы можете добавить защиту, согласно которой fillSize никогда не должен превышать размер массива.

Чтобы очистить массив, вы просто используете

filledSize = 0;

И всякий раз, когда вы перебираете используемый массив

for (int elem = 0; elem < fillSize; elem++) { myArray[elem] ...

Однако во многих случаях вам нужен кольцевой буфер, я не буду подробно останавливаться на этом, но, возможно, вы сможете проверить это и посмотреть, подходит ли это больше в вашем случае.

,