Tablica może zawierać wiele danych tego samego typu. Każda wartość zapisana w tablicy ma swój numer porządkowy (indeks) dzięki czemu można na nich przeprowadzać wiele operacji za pomocą pętli. Indeksowanie tablicy zaczyna się od 0.
A | S | T | R | A | J | A |
0 | 1 | 2 | 3 | 4 | 5 | 6 |
Długość tablicy (ilość elementów n) musi być określona podczas jej tworzenia.
Sposoby tworzenia tablicy
// Sposób 1
// tablica tworzona na stosie
int numbers[] = { 12, 2, 9, 22 };
// Sposób 2
// Utworzenie tablicy z 4 elementami, które mają wartość domyślną 0
// Przypisanie wartości do elementów tablicy
int numbers[4];
numbers[0] = 12;
numbers[1] = 2;
numbers[2] = 9;
numbers[3] = 22;
// Sposób 3 (dla zaawansowanych)
// Tablica tworzona na stercie (heap)
int* numbers = new int[4];
// Zwolnienie zaalokowanej pamięci
delete[] numbers;
Tablica stringów i char
char* imiona[] = { "Mark", "Anna", "John"};
char znaki[] = {'@', '!', 'z', 0}; //na koniec należy dodać 0
Nadpisywanie lub pobieranie wartości z tablicy następuje poprzez odwołanie do tablicy i podanie numeru indeksu.
numbers[0] = 32;
Serial.print(numbers[0]); //32
Obliczanie długości tablicy
Długość tablicy oblicza się dzieląc rozmiar całej tablicy przez rozmiar pojedynczego elementu
int len = sizeof(numbers)/sizeof(numbers[0]);
//lub
char name[] = {"Leonard"};
int dlugoscTabChar = strlen(name);
Przy tablicach tworzonych na stercie obliczanie długości tablicy w ten sposób nie zadziała, ponieważ nazwa tablicy jest wskaźnikiem do miejsca w pamięci.
Tablica kończy się niewidzialnym znakiem \0.
Tablica dwuwymiarowa (matrix)
int array1[wiersze][kolumny];
Przykład tablicy dwuwymiarowej
int array1[2][3] = {{4, 5, 2},
{9, 1, 0}};
array1[2][3] | Kolumna0 | Kolumna1 | Kolumna2 |
Wiersz0 | array1 [0][0] = 4 | array1 [0][1] = 5 | array1 [0][2] = 2 |
Wiersz1 | array1 [1][0] = 9 | array1 [1][1] = 1 | array1 [1][2] = 0 |
Serial.print(array1[1][0]); //9 ----Wiersz 1, Kolumna 0