Etap 3: Tablice automatyczne, jednowymiarowe w C++
Przewodnik po statycznych tablicach jednowymiarowych: deklaracja, inicjalizacja i bezpieczna iteracja.
Tablice jednowymiarowe (automatyczne)
Tablica to struktura danych pozwalająca przechowywać wiele elementów tego samego typu w ciągłym obszarze pamięci. Termin „automatyczna” oznacza, że pamięć dla niej jest rezerwowana na stosie w momencie deklaracji i zwalniana automatycznie po wyjściu z bloku kodu.
1. Deklaracja i Inicjalizacja
W C++ rozmiar tablicy automatycznej musi być znany w momencie kompilacji (musi być stałą).
const int ROZMIAR = 5;
int tablica[ROZMIAR]; // Deklaracja - zawiera przypadkowe wartości
int liczby[5] = {10, 20, 30, 40, 50}; // Inicjalizacja pełna
int czesciowa[5] = {1, 2}; // Reszta (indeksy 2, 3, 4) zostanie wyzerowana
int wyzerowana[100] = {0}; // Szybki sposób na wyzerowanie całej tablicy2. Dostęp do elementów
Elementy tablicy są indeksowane od 0 do N-1, gdzie N to liczba elementów.
int t[3] = {5, 10, 15};
std::cout << t[0]; // Wypisze 5
t[2] = 100; // Zmienia 15 na 1003. Iteracja po tablicy
Najskuteczniejszym sposobem operowania na tablicy jest pętla for. Pamiętaj o używaniu stałej określającej rozmiar, aby uniknąć błędów.
#include <iostream>
int main() {
const int N = 10;
int dane[N];
// Wypełnianie tablicy danymi od użytkownika
for (int i = 0; i < N; i++) {
std::cout << "Podaj element " << i << ": ";
std::cin >> dane[i];
}
// Wyświetlanie tablicy od tyłu
for (int i = N - 1; i >= 0; i--) {
std::cout << dane[i] << " ";
}
return 0;
}Krytyczne uwagi na kolokwium
- Brak sprawdzania zakresu: C++ nie sprawdza automatycznie, czy wychodzisz poza zakres tablicy. Próba zapisu do
tablica[10]przy rozmiarze 10 może nadpisać inne zmienne lub spowodować błądSegmentation Fault. To najczęstsza przyczyna „wywalania się” programów na kolokwiach. - Rozmiar tablicy a zmienna: Zgodnie ze standardem C++, nie powinno się deklarować tablicy o rozmiarze podanym przez użytkownika w ten sposób:
int n; cin >> n; int tab[n];(jest to tzw. VLA - Variable Length Array, który nie jest częścią standardu C++, choć niektóre kompilatory go dopuszczają). Na kolokwium bezpieczniej użyć dużej stałej:const int MAX = 1000; int tab[MAX];. - Kopiowanie tablic: Nie możesz skopiować tablicy przez zwykłe przypisanie
tab1 = tab2;. Musisz zrobić to element po elemencie w pętli.
Przykład: Znajdowanie maksimum w tablicy
int max = dane[0];
for (int i = 1; i < N; i++) {
if (dane[i] > max) {
max = dane[i];
}
}
std::cout << "Największa wartość: " << max;Może Cię zainteresować
Etap 11: Arytmetyka wskaźników w C++
Zrozumienie, jak C++ operuje na adresach pamięci. Dowiedz się, dlaczego ptr++ to coś więcej niż dodanie jedynki.
Etap 10: Wskaźniki, operator adresu i dereferencji
Zrozumienie fundamentów adresowania pamięci w C++: jak działają wskaźniki i operatory niskopoziomowe.
Etap 6: Obsługa napisów w stylu C (char[])
Przewodnik po niskopoziomowym przetwarzaniu napisów jako tablic znaków zakończonych zerem, zgodnie z ograniczeniami kolokwium.