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++):
- Operator pobrania adresu (
&): Zwraca adres pamięci danej zmiennej (np.&liczba). - Operator wyłuskania / dereferencji (
*): Pozwala odczytać lub zmodyfikować wartość zapisaną pod adresem wskazywanym przez wskaźnik (np.*ptr = 20;). - 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: 100Wskaźniki a bezpieczeństwo:
- Wyciek pamięci (Memory Leak): Zaalokowanie pamięci operatorem
newbez późniejszego zwolnieniadelete. - Wiszący wskaźnik (Dangling Pointer): Wskaźnik wskazujący na zwolniony wcześniej obszar pamięci.
- Segmentation Fault: Próba dereferencji wskaźnika
NULLlub 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.