Last modified: September 25, 2024

This article is written in: 🇵🇱

Zmienne i typy danych

W języku programowania, zmienna to identyfikator reprezentujący określony obszar pamięci, w którym przechowywane są dane. Każda zmienna ma przypisany konkretny typ danych, który informuje komputer o rodzaju i zakresie informacji przechowywanej w zmiennej. Typ danych określa także operacje, jakie można wykonywać na tych danych, oraz ilość pamięci, jaką zmienna zajmuje.

Deklaracja i inicjalizacja zmiennej

Deklaracja zmiennej polega na określeniu jej typu i nazwy. Inicjalizacja to przypisanie zmiennej jej początkowej wartości. Deklaracja i inicjalizacja mogą być wykonane jednocześnie lub osobno.

int liczba;                // deklaracja zmiennej typu int
liczba = 10;               // przypisanie wartości zmiennej
double wspolczynnik = 2.5; // deklaracja i inicjalizacja zmiennej typu double

Zasady nazewnictwa zmiennych

Podczas nazywania zmiennych, warto przestrzegać pewnych zasad, aby kod był czytelny i łatwy w utrzymaniu:

Istnieje kilka popularnych konwencji nazewnictwa:

Przypisanie i modyfikacja wartości

Po zadeklarowaniu zmiennej, można jej przypisać wartość lub modyfikować istniejącą wartość.

int liczba = 5;   // inicjalizacja zmiennej wartością 5
liczba = liczba + 3; // modyfikacja wartości na 8
liczba++;           // inkrementacja wartości o 1; teraz liczba to 9

Typy zmiennych

W języku C++ istnieje wiele różnorodnych typów zmiennych, które odpowiadają różnym kategoriom danych. Wśród nich można wymienić m.in.: pojedyncze znaki, liczby całkowite, liczby zmiennoprzecinkowe, typ logiczny oraz typ void.

Przykładowa tabela typów danych

Grupa Typ danych Rozmiar Zakres
Pojedyncze znaki char 1 bajt (8 bitów) -128 do 127 lub 0 do 255 (zależy od znaku)
char16_t co najmniej 16 bitów 0 do 65,535
char32_t co najmniej 32 bity 0 do 4,294,967,295
wchar_t zależy od implementacji -32768 do 32767 lub 0 do 65535
Liczby całkowite signed char co najmniej 8 bitów -128 do 127
signed short int co najmniej 16 bitów -32,768 do 32,767
signed int co najmniej 16 bitów -32,768 do 32,767
signed long int co najmniej 32 bity -2,147,483,648 do 2,147,483,647
signed long long int co najmniej 64 bity -9,223,372,036,854,775,808 do 9,223,372,036,854,775,807
Liczby naturalne unsigned char co najmniej 8 bitów 0 do 255
unsigned short int co najmniej 16 bitów 0 do 65,535
unsigned int co najmniej 16 bitów 0 do 65,535
unsigned long int co najmniej 32 bity 0 do 4,294,967,295
unsigned long long int co najmniej 64 bity 0 do 18,446,744,073,709,551,615
Liczby zmiennoprzecinkowe float 32 bity ±1.5 × 10^−45 do ±3.4 × 10^38
double 64 bity ±5.0 × 10^−324 do ±1.7 × 10^308
long double co najmniej 64 bity Zależy od implementacji, zazwyczaj większy niż double
Typ logiczny bool 1 bajt (8 bitów) true lub false
Typ void void n/d n/d

Stałe

Stała to zmienna, której wartość jest niezmienna przez cały czas trwania programu. W języku C++ stałe deklaruje się za pomocą słowa kluczowego const. Stałe mogą być również wyliczane w trakcie kompilacji przy użyciu słowa kluczowego constexpr, wprowadzonego w C++11, co pozwala na jeszcze bardziej efektywne zarządzanie pamięcią i optymalizację kodu przez kompilator.

Deklaracja stałych

const double pi = 3.14159;

W powyższym przykładzie pi jest stałą typu double o wartości 3.14159.

constexpr double euler = 2.71828;

W powyższym przykładzie euler jest stałą typu double, której wartość zostanie obliczona podczas kompilacji.

Korzyści z używania stałych

Zakres życia zmiennych

Zakres życia zmiennej określa, kiedy zmienna jest dostępna i kiedy jest niszczona podczas działania programu. Zmiennymi mogą być globalne, lokalne, statyczne i dynamiczne.

Zmienne globalne

Zmienne globalne są deklarowane poza funkcjami i są dostępne w całym programie od momentu jego uruchomienia do zakończenia. Mogą być dostępne z dowolnej funkcji w programie.

int globalna = 10; // zmienna globalna

int main() {
  int lokalna = 3; // zmienna lokalna

  std::cout << lokalna << std::endl;   // 3
  std::cout << ::globalna << std::endl; // 10
  return 0;
}

W powyższym przykładzie globalna jest zmienną globalną, a lokalna jest zmienną lokalną dostępną tylko w funkcji main. Jeśli chcemy odwołać się do zmiennej globalnej w sytuacji, gdy w danej funkcji istnieje zmienna o tej samej nazwie, używamy operatora zakresu ::.

Zmienne lokalne

Zmienne lokalne są deklarowane wewnątrz funkcji lub bloku kodu i są dostępne tylko w ramach tej funkcji lub bloku. Istnieją one od momentu ich deklaracji do końca bloku, w którym zostały zadeklarowane.

void funkcja() {
  int lokalna = 5; // zmienna lokalna
  std::cout << lokalna << std::endl; // 5
}
// zmienna lokalna nie jest dostępna poza funkcją

Zmienne statyczne

Zmienne statyczne zachowują swoją wartość między wywołaniami funkcji. Mogą być deklarowane zarówno na poziomie globalnym, jak i wewnątrz funkcji.

void funkcja() {
  static int licznik = 0; // zmienna statyczna
  licznik++;
  std::cout << "Licznik: " << licznik << std::endl;
}

int main() {
  funkcja(); // Licznik: 1
  funkcja(); // Licznik: 2
  funkcja(); // Licznik: 3
  return 0;
}

W powyższym przykładzie zmienna licznik zachowuje swoją wartość między wywołaniami funkcji funkcja.

Spis Treści

    Zmienne i typy danych
    1. Deklaracja i inicjalizacja zmiennej
    2. Zasady nazewnictwa zmiennych
    3. Przypisanie i modyfikacja wartości
    4. Typy zmiennych
    5. Stałe
      1. Deklaracja stałych
      2. Korzyści z używania stałych
    6. Zakres życia zmiennych
      1. Zmienne globalne
      2. Zmienne lokalne
      3. Zmienne statyczne