Tablice statyczne
1. Definicja
Tablica statyczna w C++ to ciąg elementów tego samego typu, umieszczonych w pamięci jeden po drugim, do których odwołujemy się za pomocą indeksu. Słowo statyczna oznacza tutaj, że rozmiar tablicy jest znany i ustalony w momencie kompilacji – nie można go zmienić podczas działania programu.
2. Deklaracja i inicjalizacja
Deklaracja:
typ– typ danych elementów (np.int,double,char).rozmiar– liczba elementów tablicy (musi być stałą całkowitą znaną w czasie kompilacji).
Przykłady:
Inicjalizacja:
3. Dostęp do elementów
- Indeksowanie rozpoczyna się od 0.
- Składnia:
Przykład:
Uwaga: brak kontroli zakresu – dostęp poza rozmiarem tablicy (tab[10] przy tablicy 5-elementowej) prowadzi do niezdefiniowanego zachowania.
4. Właściwości tablic statycznych
- Rozmiar stały – ustalany w czasie kompilacji.
- Są umieszczane w pamięci ciągłej – wszystkie elementy znajdują się obok siebie.
- Nazwą tablicy można posługiwać się jak wskaźnikiem na pierwszy element (
tab≈&tab[0]). - Brak wbudowanej kontroli granic – programista musi sam pilnować poprawnego indeksowania.
- Tablica nie może być kopiowana przypisaniem (
tab1 = tab2;jest błędem).
5. Iteracja po tablicy
Pętla for:
Pętla range-based for (C++11+):
6. Tablice wielowymiarowe
Tablice statyczne mogą być wielowymiarowe, np. macierze.
Deklaracja:
Przykład:
7. Ograniczenia tablic statycznych
- Rozmiar musi być znany w czasie kompilacji (stała liczba).
- Brak możliwości zmiany rozmiaru w trakcie działania programu.
- Brak metod ułatwiających zarządzanie (np. dodawania elementów).
- Trudniejsze przekazywanie do funkcji – trzeba podawać rozmiar.
8. Tablice statyczne a inne struktury
- Tablice dynamiczne (
new[],delete[]) – rozmiar określany w czasie działania programu. -
Kontenery STL (
std::vector,std::array) – nowocześniejsze, bezpieczniejsze i bardziej elastyczne.std::array<T, N>– alternatywa dla tablic statycznych, oferuje m.in. znajomość rozmiaru i metody (np..size()).std::vector<T>– elastyczny kontener dynamiczny.
9. Przekazywanie tablic do funkcji
W rzeczywistości funkcja otrzymuje wskaźnik do pierwszego elementu.