1. Typy danych

Program operuje na pewnych danych, które muszą być umieszczone w pamięci komputera. Poznaliście dane, których wartość może zostać zmieniona w trakcie pracy programu. Taki rodzaj danych nazywamy zmiennymi. Oprócz nich mogą być potrzebne dane, które nie powinny się zmieniać podczas wykonania programu - dane takie nazywamy stałymi.

Dane możemy podzielić na dwie grupy: stałe i zmienne - analogicznie jak w matematyce.
W języku C++ zmienne mogą być zapisywane w różnych miejscach w pamięci. Wpływa to na czas ich życia oraz sposób zarządzania pamięcią. Pierwszym typem zmiennych jaki możemy wyróżnić są zmienne lokalne. Są  one deklarowane wewnątrz funkcji lub bloku kodu np. w pętli lub instrukcji warunkowej. Zmienne te mają zasięg ograniczony do bloku, w którym zostały zadeklarowane. Oznacza to, że są dostępne tylko w ramach tego bloku. Przechowywane są na stosie (ang. stack) oraz są automatycznie usuwane po wyjściu z tego bloku. 

Kolejnym typem zmiennych są zmienne statyczne, które mogą być zarówno lokalne, jak i globalne. Zmienne te są przechowywane w specjalnym segmencie pamięci dla zmiennych statycznych. Zmienne te są deklarowane z użyciem słowa kluczowego static. W przypadku zmiennych lokalnych, słowo static sprawia, że zmienna zachowuje swój stan pomiędzy wywołaniami funkcji, w której jest zadeklarowana, mimo że jej zasięg pozostaje ograniczony do tej funkcji. Zmienne globalne zadeklarowane jako statyczne mają zasięg ograniczony do pliku, w którym są zadeklarowane, ale ich czas życia obejmuje cały czas trwania programu.

Zmienne globalne, które są deklarowane poza wszystkimi funkcjami i klasami, mają zasięg globalny, co oznacza, że są dostępne w całym programie. Są one przechowywane w segmencie danych (data segment) programu i mają trwałość przez cały czas trwania programu. 

Zmienne dynamiczne są przechowywane na stercie (ang. heap) i mają czas życia kontrolowany przez programistę. Oznacza to, że istnieją dopóki nie zostaną zwolnione. Są alokowane w pamięci za pomocą operatorów new i delete. Zarządzanie pamięcią dla zmiennych dynamicznych wymaga uwagi w celu unikania wycieków pamięci. To programista jest odpowiedzialny za zwalnianie pamięci po jej użyciu.

Istnieją także zmienne są zmienne rejestrowe, które są deklarowane z użyciem słowa kluczowego register. Zmienne są przechowywane w rejestrze procesora zamiast w pamięci operacyjnej co może przyspieszyć dostęp do niej. Zmienne te mogą mieć charakter lokalny lub globalny.

Wykorzystanie poszczególnych rodzajów zmiennych zostanie wyjaśnione w trakcie całego podręcznika. W kolejnym rozdziale przedstawiono podstawowe typy danych dostępne w języku C++, które umożliwiają deklarowanie poszczególnych zmiennych.