Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki

Słowa kluczowe: Typy danych Wskaźnik w C++

Element zadeklarowany w języku C++ zapisem int &r = x; to

A. wskaźnik na zmienną x.
Źle. Wskaźnik deklaruje się gwiazdką, np. int *p = &x, i przechowuje adres.
B. referencja do zmiennej x.
Dobrze. & po typie w deklaracji tworzy referencję, czyli drugą nazwę zmiennej x.
C. kopia zmiennej x o nazwie r.
Źle. Kopię tworzy zapis int r = x, bez znaku & przy typie.
D. adres zmiennej x zapisany jako liczba.
Źle. Adres pobiera operator & w wyrażeniu, a tu & stoi w deklaracji po typie.

Znak & w deklaracji, po typie, tworzy referencję - drugą nazwę dla istniejącej zmiennej. Po zapisie int &r = x; nazwy r i x oznaczają tę samą komórkę pamięci: instrukcja r = 5; zmieni także x. Referencję trzeba zainicjować od razu przy deklaracji i nie da się jej później przepiąć na inną zmienną. Najczęściej używa się jej w parametrach funkcji, np. void zamien(int &a, int &b), żeby funkcja mogła zmienić zmienne, z którymi ją wywołano, bez kopiowania. Do zapamiętania: & przy typie w deklaracji to referencja, * przy typie to wskaźnik, a & przed nazwą zmiennej w wyrażeniu to pobranie adresu.

Kłopot sprawia tu znak &, który w C++ ma kilka znaczeń. Wskaźnik deklaruje się gwiazdką, int *p = &x;, i jest osobną zmienną przechowującą adres - żeby dostać się do wartości, trzeba go wyłuskać zapisem *p. Referencja nie ma własnego adresu do odczytania i używa się jej jak zwykłej zmiennej. Kopia powstałaby przy zapisie int r = x; bez znaku & - wtedy zmiana r nie wpływałaby na x. Pobranie adresu jako liczby to z kolei działanie operatora & w wyrażeniu, np. &x, a nie w deklaracji z typem. W przedstawionym zapisie & stoi po typie int, więc r staje się inną nazwą tej samej zmiennej x, czyli jej referencją. Kolejność znaków ma więc znaczenie: znak ampersand po typie w deklaracji tworzy referencję, a ten sam znak przed nazwą zmiennej w wyrażeniu pobiera jej adres.

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.