Массив - это набор переменных, доступ к которым осуществляется по индексу. Массивы в языке программирования Си 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, и т.д.
Индексация массива начинается с 0. Это значит, что для массива с 10-тью элементами, индекс 9 будет последним:
int myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] последний элемент, содержит 11
// myArray[10] это неверно возможно возвращение
//произвольного значения из области памяти не относящийся к массиву
Поэтому, необходимо быть внимательным при обращении к массивам. Обращение к элементу за пределами массива (когда указанный индекс больше, чем объявленный размер массива) приведет к чтению данных из ячейки памяти, использующейся для других целей. Считывание из этой области, вероятно, не приведет ни к чему, кроме получения неверных данных. Запись же в случайные области памяти - определенно плохая идея, и часто может приводить к не желаемым результатам, таким, как зависания или сбои в работе программы. Кроме того, такие ошибки трудно отыскать.
В отличие от BASIC или JAVA, компилятор Си не проверяет правильность индексов при обращении к элементам массива.
Присваиваем значение элементу массива:
mySensVals[0] = 10;
получаем значение элемента массива:
x = mySensVals[4];
Массивы и циклы FOR
Работа с массивами часто осуществляется внутри циклов FOR, в которых счетчик цикла используется в качестве индекса каждого элемента массива. Например, программа вывода элементов массива через последовательный порт может выглядеть так:
int i;
for (i = 0; i < 5; i = i + 1) {
Serial.println(myPins[i]);
}
Смотрите также:
PROGMEM
Объявление переменных
Справочник
Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.
Источник: http://arduino.cc/en/Reference/Array |