Złożone Typy Danych w C++

prezentuje ciąg znaków i jest znacznie bardziej elastyczny niż tablica znaków (char[]). Wymaga dołączenia biblioteki <string>. Przykład użycia:
#include <iostream>
using namespace std;

int main() {
    string powitanie = "Witaj, świecie!";
    cout << powitanie << endl;
    return 0;
}

Definicja i Deklaracja Tablic

Tablica w C++ jest deklarowana przez określenie typu danych jej elementów, nazwy oraz rozmiaru w nawiasach kwadratowych. Rozmiar tablicy musi być znaną i stałą wartością w czasie kompilacji.
int liczby[5]; // deklaruje tablicę 'liczby' mogącą przechowywać 5 wartości typu int

Inicjalizacja Tablic

Tablicę można zainicjować podczas deklaracji, podając konkretne wartości dla jej elementów. Przykład:
int liczby[5] = {1, 2, 3, 4, 5}; // inicjalizacja tablicy z konkretnymi wartościami
Jeśli podczas inicjalizacji zostanie podana mniejsza liczba wartości niż rozmiar tablicy, pozostałe elementy zostaną zainicjowane wartością domyślną, dla typów liczbowych będzie to 0.

Dostęp do Elementów Tablicy

Do elementów tablicy można uzyskać dostęp za pomocą ich indeksu, który zaczyna się od 0. Pozwala to na odczytanie lub zmodyfikowanie wartości konkretnego elementu. Przykład:
int pierwszaLiczba = liczby[0]; // odczytuje pierwszy element tablicy
liczby[1] = 10; // zmienia wartość drugiego elementu tablicy na 10
Przykład Użycia Tablicy
#include <iostream>
using namespace std;

int main() {
    int liczby[5] = {5, 10, 15, 20, 25};

    // Wyświetlanie wszystkich elementów tablicy
    for (int i = 0; i < 5; i++) {
        cout << "Element na pozycji " << i << ": " << liczby[i] << endl;
    }

    return 0;
}
vector: Dynamiczna tablica, która może zmieniać rozmiar w trakcie działania programu. Umożliwia przechowywanie i zarządzanie kolekcją elementów. Wymaga dołączenia biblioteki <vector>. Przykład użycia:
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> liczby = {1, 2, 3, 4, 5};
    return 0;
}

Specjalne Typy Danych

  • Wskaźniki (*): Przechowują adresy pamięci. Umożliwiają bezpośredni dostęp do wartości zmiennych lub funkcji, do których wskazują. Są podstawowym narzędziem do zarządzania pamięcią w C++. Przykład użycia:
int wartosc = 5;
int* wskaznikNaWartosc = &wartosc; // Wskaźnik na zmienną 'wartosc'
Referencje (&): Są alternatywą dla wskaźników, oferując bardziej bezpośredni i bezpieczniejszy sposób na odniesienie się do innej zmiennej bez konieczności korzystania z jej adresu pamięci. Referencje muszą być zainicjowane podczas deklaracji i nie mogą zmienić obiektu, do którego się odnoszą. Przykład użycia:
int oryginalnaWartosc = 10;
int& referencjaDoWartosci = oryginalnaWartosc; // Referencja do 'oryginalnaWartosc'

Przykłady Zastosowania

Przykład z string:
#include <iostream>
#include <string>
using namespace std;

int main() {
    string nazwa = "Jan Kowalski";
    cout << "Nazwa: " << nazwa << endl;
    return 0;
}
Przykład z vector:
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<double> oceny = {4.5, 3.0, 5.0};
    oceny.push_back(4.0); // Dodajemy nową ocenę do wektora
    for (double ocena: oceny) {
        cout << ocena << " ";
    }
    return 0;
}
Przykład z wskaźnikami:
#include <iostream>

using namespace std;

int main() {
    int x = 10;
    int *px = &x;
    cout << "Wartość x: " << *px << endl; // Dostęp do wartości x poprzez wskaźnik
    return 0;
}
Przykład z referencjami:
#include <iostream>

using namespace std;

void zwieksz(int &ref) {
    ref++;
}

int main() {
    int liczba = 5;
    zwieksz(liczba); // Funkcja działa bezpośrednio na zmiennej 'liczba' poprzez referencję
    cout << "Liczba po zwiększeniu: " << liczba << endl;
    return 0;
}