KWALIFIKACJA INF2 + INF3 - CZERWIEC 2014

PYTANIE NR 8.
W programowaniu wskaźnikiem nazywamy
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Wskaźnik (pointer) to zmienna przechowująca adres w pamięci, pod którym znajduje się inna zmienna lub dane. Indeks tablicy jest liczbą (0,1,2...), a liczba elementów to rozmiar/limit. Częste użycie i rejestr nie definiują wskaźnika.

Pełne wyjaśnienie:

Wskaźnik (ang. pointer) w programowaniu, szczególnie w językach C i C++, to zmienna, która przechowuje adres komórki pamięci. Taki adres "wskazuje", gdzie w RAM znajdują się dane (np. inna zmienna). Dzięki temu można najpierw poznać położenie danych, a następnie je odczytać lub zmienić przez dereferencję.

Odpowiedź "zmienną, która przechowuje adres komórki pamięci" jest poprawna, bo oddaje istotę wskaźnika: przechowywanie adresu, a nie zwykłej wartości użytkowej (jak licznik czy indeks).

Pozostałe propozycje opisują inne pojęcia, które bywają mylone ze wskaźnikami:

  • "zmienną, która przechowuje indeks elementu w tablicy" – indeks to liczba porządkowa/offset używana w zapisie typu tablica[3]. Indeks nie jest adresem, tylko wartością całkowitą służącą do wybrania elementu.
  • "zmienną, która przechowuje liczbę elementów w tablicy" – to opis rozmiaru (np. długości) tablicy/bufora. Rozmiar może pomagać w pętli, ale nie wskazuje miejsca w pamięci.
  • "zmienną, która jest często używana i trzymana w rejestrze" – umieszczenie zmiennej w rejestrze (lub w pamięci) jest kwestią optymalizacji kompilatora/architektury. Nie stanowi definicji wskaźnika; wskaźnik może, ale nie musi, być w rejestrze.

W praktyce rozróżniaj: adres (gdzie to leży w pamięci) vs wartość (co tam jest). To rozróżnienie jest kluczowe przy pracy z dynamiczną alokacją, przekazywaniem argumentów do funkcji i implementacją struktur danych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Wskaźnik to zmienna, która przechowuje adres pamięci innego obiektu (np. zmiennej). Dzięki temu można odwołać się do danych po adresie i wykonać dereferencję, aby odczytać lub zmienić wartość.
Indeks tablicy to liczba (np. 0, 1, 2) wybierająca element w zapisie tablica[i]. Wskaźnik przechowuje adres w pamięci. To inne typy informacji: liczba porządkowa vs położenie w RAM.
Operator & zwraca adres zmiennej. Jeśli masz int x, to &x jest adresem, pod którym w pamięci znajduje się x. Ten adres można przypisać do wskaźnika odpowiedniego typu.
Operator * użyty na wskaźniku wykonuje dereferencję, czyli przechodzi pod wskazany adres i daje dostęp do wartości w tym miejscu. To pozwala czytać lub modyfikować dane, na które wskaźnik wskazuje.
Najczęściej wskazuje na zmienną lub element tablicy, ale może też wskazywać na pamięć zaalokowaną dynamicznie (np. bufor), na strukturę, a w C/C++ istnieją też wskaźniki na funkcje. Wspólny element: przechowuje adres.
NULL (lub nullptr w C++) oznacza wskaźnik, który nie wskazuje na poprawny obiekt. To "brak adresu". Dereferencja takiego wskaźnika jest błędem i zwykle kończy się awarią programu.
Najczęstsze to: mylenie adresu z wartością (np. &x vs *p), dereferencja niezainicjalizowanego wskaźnika, użycie wskaźnika po zwolnieniu pamięci oraz utożsamianie wskaźnika z indeksem tablicy.
Wskaźniki stosuje się m.in. przy dynamicznej alokacji pamięci, przekazywaniu dużych struktur do funkcji bez kopiowania, implementacji list i drzew oraz w programowaniu systemowym, gdzie potrzebny jest bezpośredni dostęp do pamięci.
W C/C++ wskaźnik rozpoznasz po znaku * w deklaracji typu, np. int *p;. Taki p przechowuje adres obiektu typu int. Ważne: *p w wyrażeniu oznacza dereferencję, nie deklarację.
To powiązane, ale nie to samo. Dodając 1 do wskaźnika, przesuwasz go o rozmiar typu (np. o sizeof(int)). Indeks jest liczbą, a wskaźnik przechowuje adres; arytmetyka wskaźników operuje na adresach.
info

Około 78% zdających odpowiada poprawnie na to pytanie. średnio łatwe

Eksperci podkreślają: "Wskaźnik (pointer) to zmienna przechowująca adres w pamięci, pod którym znajduje się inna zmienna lub dane."

Źródła:

  • Brian W. Kernighan, Dennis M. Ritchie, "The C Programming Language" (2nd Edition), rozdział 5 "Pointers and Arrays"
  • ISO/IEC 9899:2018 (C18), definicje i semantyka wskaźników w specyfikacji języka C (sekcje dotyczące typów wskaźnikowych i operatorów * oraz &)
  • cppreference.com, "Pointer" (C) – https://en.cppreference.com/w/c/language/pointer (dostęp: 2026-03-13)

Materiały:

  • Podręcznik do C/C++ omawiający wskaźniki (definicja, deklaracja, dereferencja)
  • Dokumentacja/poradniki dotyczące operatorów & i * w C
  • Ćwiczenia z tablic i wskaźników (różnica indeksu i adresu)

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego