Przejdź do głównej treści

Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji

Zawód: Technik programista

Kategorie: Programowanie

Który operator w języku C++ jest używany do uzyskiwania adresu zmiennej?

A.
&
B.
>
C.
*
D.
delete
Operator & w języku C++ służy, w kontekście wyrażenia, do pobrania adresu obiektu w pamięci. Jeśli mamy zmienną int liczba = 10;, to zapis int* wsk = &liczba; oznacza: utwórz wskaźnik na int i wpisz do niego adres zmiennej liczba. To jest bardzo ważne przy pracy ze wskaźnikami, przekazywaniu danych do funkcji przez adres, obsłudze struktur danych oraz w starszym stylu programowania systemowego. Moim zdaniem warto od razu kojarzyć &: adres zmiennej, a *: dostęp do wartości pod adresem, bo te dwa operatory często występują razem. Przykład praktyczny: void zwieksz(int* p) { (*p)++; } można wywołać jako zwieksz(&liczba); i wtedy funkcja modyfikuje oryginalną zmienną, nie kopię. W nowoczesnym C++ często preferuje się referencje, inteligentne wskaźniki i kontenery standardowe, zgodnie z dobrymi praktykami C++ Core Guidelines, ale rozumienie operatora & dalej jest podstawą. Bez tego ciężko ogarnąć pamięć, wskaźniki, tablice dynamiczne czy interfejsy niskopoziomowe.
W tym pytaniu łatwo pomylić kilka operatorów, bo w C++ symbole są krótkie i zależą od kontekstu. Symbol * bardzo często pojawia się obok wskaźników, więc uczniowie czasem zakładają, że to on pobiera adres zmiennej. Tak naprawdę * w deklaracji, na przykład int* p, oznacza zmienną wskaźnikową, a w wyrażeniu, na przykład *p, wykonuje dereferencję, czyli przejście z adresu do wartości przechowywanej pod tym adresem. To odwrotny kierunek niż pobieranie adresu. Z mojego doświadczenia ten błąd bierze się z uczenia się składni na pamięć, bez rysowania sobie relacji: zmienna, jej adres i wskaźnik. Operator > jest operatorem porównania, zwraca wynik logiczny, np. x > 5, i nie ma nic wspólnego z adresem pamięci. Może być też elementem składni szablonów, ale nadal nie służy do pobierania adresu. Słowo kluczowe delete zwalnia pamięć zaalokowaną przez new, więc dotyczy zarządzania czasem życia obiektu, a nie uzyskiwania adresu. Dobra praktyka w nowoczesnym C++ mówi, żeby rzadziej używać ręcznego new i delete, a częściej std::unique_ptr, std::shared_ptr albo zwykłych obiektów automatycznych. Adres zmiennej pobieramy operatorem &, pamiętając, że ten sam znak w innym kontekście może oznaczać referencję albo bitowy AND, więc zawsze trzeba patrzeć na całe wyrażenie, nie tylko na pojedynczy symbol.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.