Массив - это набор переменных, доступ к которым осуществляется с помощью номера индекса. Массивы на языке программирования C++, на которых написаны эскизы Arduino, могут быть сложными, но использование простых массивов относительно просто.
Все приведенные ниже методы являются допустимыми способами создания (объявления) массива.
int myInts[6]; int myPins[] = {2, 4, 8, 3, 6}; int mySensVals[6] = {2, 4, -8, 3, 2}; char message[6] = "hello";
Вы можете объявить массив без инициализации, как в myInts.
В myPins мы объявляем массив без явного выбора размера. Компилятор считает элементы и создает массив соответствующего размера.
Наконец, вы можете инициализировать и изменить размер вашего массива, как в mySensVals. Обратите внимание, что при объявлении массива типа char требуется еще один элемент, чем ваша инициализация, для хранения требуемого нулевого символа.
Массивы индексируются нулем, то есть, ссылаясь на приведенную выше инициализацию массива, первый элемент массива имеет индекс 0, следовательно mySensVals[0] == 2, mySensVals[1] == 4, и так далее.
Это также означает, что в массиве с десятью элементами индекс девять является последним элементом. Следовательно:
int myArray[10]={9, 3, 2, 4, 3, 2, 7, 8, 9, 11}; // myArray[9] содержит 11 // myArray[10] - неправильно, содержит в себе случайную информацию (другой адрес в памяти)
По этой причине вы должны быть осторожны при доступе к массивам. Доступ к концу массива (с использованием номера индекса, превышающего объявленный размер массива - 1) - это чтение из памяти, используемой для других целей. Чтение из этих мест, вероятно, мало что даст, кроме получения неверных данных. Запись в произвольные области памяти, безусловно, является плохой идеей и часто может привести к несчастным результатам, таким как сбои или сбой программы. Это также может быть трудной ошибкой для отслеживания.
В отличие от BASIC или JAVA, компилятор C ++ не проверяет, находится ли доступ к массиву в допустимых пределах объявленного вами размера массива.
Чтобы присвоить значение массиву:
mySensVals[0] = 10;
Чтобы извлечь значение из массива:
x = mySensVals[4];
Внутри массивов часто используется цикл for, где счетчик циклов используется в качестве индекса для каждого элемента массива. Например, чтобы напечатать элементы массива через последовательный порт, вы можете сделать что-то вроде этого:
int i; for (i = 0; i < 5; i = i + 1) { Serial.println(myPins[i]); }