Przejdź do treści głównej
INF.04Języki i Składnia Programowania

Wskaźnik i Zarządzanie Pamięcią (Pointers)

Zmienna przechowująca adres innej komórki pamięci RAM zamiast bezpośredniej wartości, operująca za pomocą operatora pobrania adresu (&) i dereferencji (*).

Czym jest wskaźnik?

Wskaźnik (Pointer) to zmienna, której wartością jest fizyczny lub logiczny adres w pamięci operacyjnej komputera, pod którym znajduje się inna zmienna lub obiekt.

Podstawowe operatory wskaźnikowe (C / C++):

  1. Operator pobrania adresu (&): Zwraca adres pamięci danej zmiennej (np. &liczba).
  2. Operator wyłuskania / dereferencji (*): Pozwala odczytać lub zmodyfikować wartość zapisaną pod adresem wskazywanym przez wskaźnik (np. *ptr = 20;).
  3. Wskaźnik pusty (nullptr / NULL): Wskaźnik, który nie wskazuje na żaden poprawny adres pamięci.
CPP
int liczba = 42;
int* ptr = &liczba; // ptr przechowuje adres zmiennej liczba

std::cout << "Wartość: " << *ptr << std::endl; // Wypisze: 42 (dereferencja)
std::cout << "Adres: " << ptr << std::endl;    // Wypisze np: 0x7ffd5e8

*ptr = 100; // Zmiana wartości w komórce pamięci
std::cout << liczba << std::endl; // Wypisze: 100

Wskaźniki a bezpieczeństwo:

  • Wyciek pamięci (Memory Leak): Zaalokowanie pamięci operatorem new bez późniejszego zwolnienia delete.
  • Wiszący wskaźnik (Dangling Pointer): Wskaźnik wskazujący na zwolniony wcześniej obszar pamięci.
  • Segmentation Fault: Próba dereferencji wskaźnika NULL lub pamięci nieprzydzielonej do procesu.

Pułapki na egzaminie INF.04:

  • Symbol * przy deklaracji oznacza typ wskaźnikowy (int* p), a w wyrażeniu oznacza dereferencję (*p = 5).
  • Symbol & oznacza pobranie adresu zmiennej.

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Wskaźnik i Zarządzanie Pamięcią (Pointers) lub rozpocznij trening.