KWALIFIKACJA INF2 + INF3 - CZERWIEC 2014

PYTANIE NR 7.
W języku programowania C w celu zadeklarowania typu złożonego - na zasadach tożsamych jak przy deklaracji typu złożonego za pośrednictwem słowa kluczowego record w języku Pascal - należy użyć słowa kluczowego
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W języku C odpowiednikiem rekordu (record) znanego z Pascala jest struktura.
Do deklarowania takiego typu złożonego służy słowo kluczowe struct. Pozostałe opcje oznaczają inne konstrukcje: union współdzieli pamięć pól, enum tworzy wyliczenie, a register dotyczy klasy pamięci.

Pełne wyjaśnienie:

W języku C typ złożony, który grupuje wiele pól (np. liczby, napisy, inne struktury) w jedną logiczną całość, deklaruje się za pomocą słowa kluczowego struct. Taka konstrukcja jest funkcjonalnie zbliżona do "rekordu" (record) spotykanego w Pascalu: oba rozwiązania pozwalają opisać "rekord danych" składający się z nazwanych pól o różnych typach.

Dlaczego poprawne jest "struct"? Ponieważ struct definiuje strukturę, w której każde pole ma własne miejsce w pamięci, a rozmiar struktury jest (w uproszczeniu) sumą rozmiarów pól z uwzględnieniem wyrównań. Dzięki temu można przechowywać naraz komplet informacji, np. dane użytkownika: identyfikator, imię, status, itp.

Dlaczego pozostałe odpowiedzi nie pasują?

  • union także grupuje pola, ale wszystkie pola współdzielą ten sam obszar pamięci. W danym momencie sens ma zwykle jedno z nich, więc unia nie odpowiada typowemu "rekordowi", gdzie pola istnieją jednocześnie.
  • enum służy do definiowania typu wyliczeniowego, czyli zestawu nazwanych stałych całkowitych (np. stany: START, STOP). To nie jest typ złożony z wielu pól.
  • register dotyczy klasy pamięci (wskazówki dla kompilatora co do przechowywania zmiennej) i nie służy do tworzenia nowego typu złożonego.

Wskazówka egzaminacyjna: jeśli w pytaniu pojawia się idea "rekordu danych" lub "wiele pól w jednym typie", w C najczęściej szukasz właśnie struct. Jeśli jest mowa o oszczędzaniu pamięci przez nakładanie pól, rozważ union. Jeśli o stanach/etykietach liczbowych — enum.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
struct w C to typ złożony grupujący wiele nazwanych pól o różnych typach (np. int, float, tablice, wskaźniki). Używa się go do modelowania "rekordu danych", np. danych użytkownika lub elementu kolekcji.
Bo struct definiuje strukturę danych, w której wszystkie pola istnieją jednocześnie i mają osobne miejsca w pamięci. To naturalny sposób opisywania obiektów składających się z kilku cech, np. adresu (ulica, miasto, kod).
W struct każde pole ma własną pamięć i wszystkie pola mogą być używane jednocześnie. W union pola współdzielą ten sam obszar pamięci, więc zwykle sens ma tylko jedno pole naraz. Union bywa używana do oszczędności pamięci lub interpretacji danych.
enum tworzy typ wyliczeniowy, czyli zbiór nazwanych wartości całkowitych (np. statusy). Nie składa się z wielu pól jak rekord/struktura, tylko reprezentuje jedną wartość z określonego zestawu, dlatego nie zastępuje struct.
register to specyfikator klasy pamięci (historycznie wskazówka, by przechowywać zmienną w rejestrze CPU). Nie służy do definiowania nowych typów ani do grupowania pól. Współczesne kompilatory zwykle same optymalizują takie decyzje.
Najczęściej definiuje się strukturę, a potem tworzy zmienną tego typu. Przykładowo: definicja typu i deklaracja zmiennej. Na egzaminie ważne jest rozpoznanie, że używa się słowa kluczowego struct.
Pośrednio tak: choć INF.3 dotyczy stron i aplikacji, podstawy programowania i modelowania danych są przydatne w wielu technologiach. Zrozumienie struktur ułatwia pracę z danymi, formatami i logiką aplikacji, nawet gdy później używasz innych języków.
Najczęściej: modelowanie obiektów z wieloma atrybutami (np. klient, produkt), przechowywanie elementów tablicy rekordów, przekazywanie wielu wartości do funkcji, oraz organizacja danych w większych programach. Kluczowe jest rozpoznanie, że to "rekord danych".
union ma sens, gdy chcesz przechowywać alternatywne reprezentacje danych w tej samej pamięci (np. różne formaty tego samego bufora) albo minimalizować rozmiar struktury. Trzeba wtedy pilnować, które pole jest aktualnie "aktywne".
Zapamiętaj role: struct = wiele pól naraz; union = pola "na zmianę" w tej samej pamięci; enum = jedna wartość z listy nazw. Jeśli pytanie mówi o odpowiedniku rekordu, najpewniej chodzi o struct.
info

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

Specjaliści zwracają uwagę: "W języku C odpowiednikiem rekordu (record) znanego z Pascala jest struktura.Do deklarowania takiego typu złożonego służy słowo kluczowe struct."

Źródła:

  • ISO/IEC 9899:2018 (C18), rozdziały dot. deklaracji typów i struktur (struct/union/enum) — źródło normatywne języka C
  • cppreference.com: "struct" (C language) — https://en.cppreference.com/w/c/language/struct (dostęp: 2026-03-01)
  • cppreference.com: "union" (C language) — https://en.cppreference.com/w/c/language/union (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja języka C (rozdziały o deklaracjach i typach)
  • Materiały kursowe o typach strukturalnych: struct/union/enum
  • Ćwiczenia: pisanie definicji struct i tworzenie zmiennych/typedef

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego