Zmienne wskaźnikowe w C++

Wskaźniki (ang. pointers) w C++ są zmiennymi, które przechowują adresy pamięci innych zmiennych. Pozwalają na dynamiczne zarządzanie pamięcią, przekazywanie dużych struktur danych do funkcji bez kopiowania oraz tworzenie bardziej zaawansowanych struktur, takich jak listy czy drzewa.


1. Definicja wskaźnika

  • Wskaźnik jest zmienną, która przechowuje adres innej zmiennej.
  • Deklaracja wskaźnika wymaga typu zmiennej, na którą wskazuje, oraz symbolu *.

Składnia:

Przykład:

  • liczba – zmienna typu int.
  • wskaznik – wskaźnik na zmienną typu int.
  • &liczba – adres zmiennej w pamięci.

2. Operator * (dereferencja)

  • Służy do dostępu do wartości przechowywanej pod adresem, na który wskazuje wskaźnik.

Przykład:

  • *wskaznik oznacza „wartość pod adresem wskazywanym przez wskaźnik”.

3. Operator & (adres)

  • Zwraca adres zmiennej w pamięci.

Przykład:

  • Operator & stosuje się przy inicjalizacji wskaźnika.

4. Wskaźnik nullptr

  • Wskaźnik może być niezainicjalizowany lub wskazywać na nic.
  • Współczesny C++ używa nullptr zamiast NULL.

Przykład:

  • Zapobiega przypadkowemu użyciu nieprawidłowego adresu.

5. Wskaźniki a tablice

  • Nazwa tablicy w C++ jest traktowana jako wskaźnik na jej pierwszy element.
  • Można używać wskaźników do iteracji po tablicach.

Przykład:

  • wsk + i oznacza adres kolejnego elementu tablicy (aritmetyka wskaźników).

6. Wskaźniki a funkcje

  • Wskaźniki pozwalają na przekazywanie argumentów przez referencję, co umożliwia modyfikację zmiennych w funkcji.

Przykład:

  • *x odwołuje się do wartości pod adresem przekazanym do funkcji.

7. Dynamiczna pamięć a wskaźniki

  • Wskaźniki są niezbędne przy dynamicznym przydzielaniu pamięci za pomocą new i zwalnianiu jej delete.

Przykład:

  • Dla tablic dynamicznych: