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 typuint.wskaznik– wskaźnik na zmienną typuint.&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:
*wskaznikoznacza „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
nullptrzamiastNULL.
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 + ioznacza 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:
*xodwoł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ą
newi zwalnianiu jejdelete.
Przykład:
- Dla tablic dynamicznych: