array

Массив - это набор переменных, доступ к которым осуществляется с помощью номера индекса. Массивы на языке программирования 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

Внутри массивов часто используется цикл for, где счетчик циклов используется в качестве индекса для каждого элемента массива. Например, чтобы напечатать элементы массива через последовательный порт, вы можете сделать что-то вроде этого:

int i;
	for (i = 0; i < 5; i = i + 1) {
		Serial.println(myPins[i]);
	}