KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2015

PYTANIE NR 22.
Pojęcie zmiennej wskaźnikowej oznacza zmienną
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zmienna wskaźnikowa (wskaźnik) przechowuje adres innego obszaru pamięci, najczęściej adres innej zmiennej. Dzięki temu można uzyskać dostęp pośredni do danych (np. odczytać lub zmienić wartość wskazywanej zmiennej). Pozostałe odpowiedzi opisują inne cechy (typ dynamiczny, obiekt, tablica), a nie przechowywanie adresu.

Pełne wyjaśnienie:

Wskaźnik (zmienna wskaźnikowa) to zmienna, której wartością jest adres w pamięci. Ten adres zwykle wskazuje na inną zmienną albo na początek pewnego obszaru danych. Taka konstrukcja pozwala na tzw. dostęp pośredni: zamiast pracować na samej wartości, przechowujemy informację "gdzie w pamięci ta wartość się znajduje", a następnie odwołujemy się do niej poprzez dereferencję.

Dlaczego poprawna jest odpowiedź:
"która zawiera adres innej zmiennej w pamięci" oddaje istotę wskaźnika: przechowywanie adresu (lokalizacji) danych.

Dlaczego pozostałe odpowiedzi są błędne:

  • "typu dynamicznego" – "dynamiczny" dotyczy zwykle sposobu tworzenia/zarządzania danymi w czasie działania programu (np. alokacja), a nie definicji wskaźnika. To, że w praktyce często używa się wskaźników do obsługi pamięci dynamicznej, nie znaczy, że wskaźnik jest "typem dynamicznym".
  • "obiektową danej klasy" – obiekt jest instancją klasy w programowaniu obiektowym. Obiekt może być przechowywany bezpośrednio albo może być do niego wskaźnik, ale sama "zmienna wskaźnikowa" nie oznacza "zmiennej obiektowej". To inna kategoria pojęciowa.
  • "tablicową" – tablica jest uporządkowanym zbiorem elementów tego samego typu. W niektórych językach (np. C) nazwa tablicy w wielu kontekstach ulega konwersji do wskaźnika na pierwszy element, co bywa źródłem pomyłek. Jednak tablica i wskaźnik to nie to samo: tablica opisuje strukturę danych, a wskaźnik przechowuje adres.

Wskazówka egzaminacyjna: jeśli w treści pojawia się "adres w pamięci", "wskazuje na", "odwołanie pośrednie", to najczęściej chodzi o wskaźnik. Jeśli jest mowa o "zbiorze elementów" – to tablica; o "instancji klasy" – to obiekt.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Zmienna wskaźnikowa (wskaźnik) to zmienna, której wartością jest adres pamięci wskazujący na inne dane, np. inną zmienną. Dzięki temu program może uzyskać dostęp pośredni do danych i je modyfikować, odwołując się do lokalizacji w pamięci.
Najczęstsze słowa-klucze to: adres, "wskazuje na", "lokalizacja w pamięci", "odwołanie pośrednie", "dereferencja". Jeśli odpowiedź opisuje przechowywanie adresu, a nie danych "wprost", to zwykle jest to wskaźnik.
Tablica jest strukturą danych z wieloma elementami, a wskaźnik to pojedyncza zmienna przechowująca adres. W C nazwa tablicy często zachowuje się podobnie do wskaźnika na pierwszy element, co myli uczniów, ale pojęcia nadal są różne i mają inne własności.
Nie. W wielu językach wysokiego poziomu (np. w środowiskach zarządzanych) bezpośrednie wskaźniki są ukryte lub ograniczone, a programista używa referencji/uchwytów. Natomiast w C/C++ wskaźniki są podstawowym mechanizmem pracy z pamięcią i adresami.
Wskaźniki są używane m.in. do przekazywania danych do funkcji "przez adres", tworzenia struktur dynamicznych (listy, drzewa), obsługi buforów, pracy z danymi binarnymi oraz zarządzania pamięcią przy alokacji dynamicznej. Ułatwiają efektywną manipulację danymi.
Typowe błędy to: mylenie wskaźnika z tablicą, utożsamianie wskaźnika z "typem dynamicznym" (bo dynamiczna alokacja często używa wskaźników) oraz mieszanie pojęć z OOP (obiekt/klasa) z mechanizmem przechowywania adresu w pamięci.
Oznacza to, że zamiast trzymać "samą wartość" (np. liczbę), wskaźnik trzyma informację "gdzie ta wartość leży". Ten adres pozwala potem odczytać lub zmienić dane znajdujące się pod tym adresem, czyli wykonać dostęp pośredni.
Wskaźnik jest zmienną przechowującą adres i zwykle można go przestawiać na inne miejsce oraz sprawdzać, czy jest pusty (zależnie od języka). Referencja jest często bardziej "bezpiecznym" aliasem do obiektu, zwykle bez możliwości bycia "brakiem adresu".
Obiekt to instancja klasy (OOP), a wskaźnik opisuje sposób przechowywania informacji: adres. Można mieć wskaźnik do obiektu, ale "zmienna wskaźnikowa" nie oznacza "zmiennej obiektowej". To dwie różne cechy: typ danych vs mechanizm adresowania.
Warto opanować definicję wskaźnika, pojęcia: adres, dereferencja, przekazanie przez adres, oraz relację tablica–wskaźnik w C/C++. Pomaga też rozwiązywanie krótkich zadań: co jest adresem, co wartością i co wskazuje na co.
info

To pytanie poprawnie rozwiązuje 67% zdających egzamin. średnie

W praktyce zawodowej kluczowe jest to, że zmienna wskaźnikowa (wskaźnik) przechowuje adres innego obszaru pamięci, najczęściej adres innej zmiennej.

Źródła:

  • cppreference.com: "Pointer declaration" (C) https://en.cppreference.com/w/c/language/pointer - accessed 2026-02-18
  • Microsoft Learn: "Pointers (C)" https://learn.microsoft.com/en-us/cpp/c-language/pointers-c?view=msvc-170 - accessed 2026-02-18
  • Kernighan, Ritchie: "The C Programming Language", 2nd edition, rozdział 5 "Pointers and Arrays", 1988

Materiały:

  • Dokumentacja języka C/C++ dotycząca wskaźników i operatorów adresu/dereferencji
  • Kurs podstaw pamięci i adresowania w kontekście programowania
  • Zadania praktyczne: dereferencja, przekazywanie przez wskaźnik, proste struktury danych

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego