# 11 Tablice jednowymiarowe ## Tablice domyślnie deklarujemy w przestrzeni globalnej. Przykłady: ```cpp= #include <iostream> using namespace std; // (przestrzeń globalna) // np. dla n <= 10^6 int tab[1000006]; // <- zawsze deklarujemy trochę więcej niż potrzebujemy // ↑ tablice tworzone w przestrzeni globalnej są wyzerowane. // ciekawostka, że tak można const int P = 1e6+6; int tab2[P]; // za pomocą nawiasów klamrowych, // można przypisywać wartości do tablicy przy jej tworzeniu. int test[3]={1,2,3}; int main(){ int c; // <- UWAGA! Zmienna bez zainicjalizowanej wartości int tab3[100]={}; // <- tak też stworzymy wyzerowaną tablicę // jednkaże zwykle nie deklarujemy dużych tablic w funkcjach, // a w przestrzeni globalnej // ❌ TAK NIE ROBIMY: tab3[100] = 3; // <- tab3 ma zakres od 0 do 99 cout<<tab3[105]; // <---------------------------- tab = 7; // tab to wskaźnik na tablicę, a nie zmienna! cout<<tab; //<- to nie wypisze nam całej tablicy :( int n; cin>>n; int tab4[n]; // NIE WOLNO TAK ROBIĆ! W języku C jest to nielegalne. ... ``` # Warto wiedzieć! Typ int ma 4 bajty = 32 bity. W zmiennej typu int możemy trzymać liczby od −231 (~ -2mld.) do 231−1 (~ 2 mld.) Trzeba pamiętać, że gdy nie przypisujemy wartości danej komórce pamięci, to znajduje się tam losowa wartość (tak jak znak zapytania w maszynie RAM). Zadania na Themisie i na konkursach często mają limit pamięci. Jednym z przeliczników, które warto znać jest ten, że tablica miliona intów ma rozmiar 4MB. Deklarując tablicę musimy pamiętać o jej odpowiedniej wielkości. Nie możemy jako programiści dopuścić do zaglądania w “nie naszą pamięć”. Np. próba odczytu lub zapisu do komórki spoza tablicy, w zadaniu na Themisie, np. tab[-1], lub tab[10] (dla tablicy 10 elementowej), zakończy się odpowiednim błędem. Próba zapisu liczby o typie innym niż zmienna do której zapisujemy, nie zakończy się błędem. Program wykona swoje zadanie, odpowiednio ucinając liczbę, lub modyfikując ją w inny sposób. Np. cout<<(int)(3.5); wypisze liczbę 3. By przyspieszyć działanie programu poprzez wyłączenie synchronizacji strumieni (i innych niepotrzebnych nam elementów) dodajemy na początku funkcji main linijki: ```cpp= ios_base::sync_with_stdio(false); cin.tie(0); ```