# 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);
```