Масиви

Документація

Масиви


Масиви — це колекція змінних, до яких надається доступ індексним номером. Масиви у мові програмування 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) — це зчитування з пам'яті, яка використовується для інших цілей. Зчитування з цих місць ймовірно не дасть нічого, крім недійсних даних. Писати у випадкових місцях пам’яті — безумовно погана ідея. Часто це може призвести до невтішних результатів, таких як збої і несправності програми. Цю помилку також буде складно відстежити.

На відміну від ASIC чи JAVA, компілятор C не перевіряє, чи запит доступу до масиву перебуває в допустимих межах для розміру масиву, що був оголошений.

Щоб присвоїти масиву значення:
mySensVals[0] = 10;


Щоб знайти значення в масиві:

x = mySensVals[4];


Масиви і цикли for

Масивами часто управляють всередині циклів for, де лічильник циклу використовується як індекс для кожного елемента масиву. Наприклад, щоб надрукувати елементи масиву через послідовний порт, можна зробити щось на зразок цього:

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


Повернутись до головної

Коментарі 0

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.