KWALIFIKACJA INF2 + INF3 - CZERWIEC 2009

PYTANIE NR 7.
Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zapis int funkcja(void); to prototyp funkcji w C/C++. int określa typ zwracany, więc funkcja zwraca liczbę całkowitą. Element (void) w liście parametrów oznacza jawnie, że funkcja nie przyjmuje żadnych parametrów. Nie jest to "parametr o nazwie void".

Pełne wyjaśnienie:

W nagłówku/prototypie funkcji w C/C++ występują trzy kluczowe elementy: typ zwracany, nazwa funkcji oraz lista parametrów w nawiasach.

Deklaracja int funkcja(void); oznacza, że:

  • int to typ zwracany – funkcja po wywołaniu zwraca wartość całkowitą (np. poprzez return).
  • funkcja to identyfikator (nazwa) funkcji.
  • (void) w miejscu listy parametrów jest w C/C++ specjalnym zapisem, który jawnie wskazuje, że parametrów nie ma.

Dlatego poprawne rozumienie jest takie: funkcję wywołuje się bez argumentów, np. int x = funkcja();, a kompilator może wykryć błąd, jeśli ktoś spróbuje przekazać argumenty.

Odpowiedź mówiąca, że funkcja "nie zwraca żadnej wartości" jest błędna, bo to wymagałoby typu zwrotu void, a tutaj typem zwracanym jest int.

Odpowiedzi sugerujące "parametr o nazwie void" są również błędne. void w tym miejscu nie jest nazwą parametru, tylko słowem kluczowym opisującym brak parametrów (a nie ich istnienie).

Warto też pamiętać o typowej pułapce: w języku C zapis funkcja() historycznie może oznaczać nieokreśloną listę parametrów, natomiast funkcja(void) jednoznacznie deklaruje brak parametrów. To właśnie dlatego forma z void bywa uznawana za bardziej precyzyjną.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Oznacza prototyp funkcji, która zwraca int i nie przyjmuje żadnych parametrów. Słowo void w liście parametrów to jawne wskazanie "brak parametrów", a nie nazwa argumentu.
W C zapis (void) jest specjalną konwencją składniową: mówi kompilatorowi, że lista parametrów jest pusta. Dzięki temu nie da się poprawnie wywołać funkcji z argumentami, bo kompilator wykryje niezgodność.
Nie. void jest słowem kluczowym (typem) i nie może być użyte jako nazwa zmiennej/parametru. W zapisie (void) pełni rolę informacji o braku parametrów, a nie identyfikatora.
W języku C funkcja(void) jednoznacznie znaczy "brak parametrów". Natomiast funkcja() (puste nawiasy) w starym stylu C może oznaczać, że parametry nie zostały określone. To częsta pułapka na egzaminach.
W C++ obie formy oznaczają wywołanie bez argumentów, ale zapis z void spotyka się rzadziej. Na potrzeby rozumienia prototypu najważniejsze jest: int to typ zwracany, a nawiasy określają parametry.
Typ zwracany int oznacza, że funkcja kończy się zwróceniem wartości całkowitej, np. przez return 0;. W kodzie wynik można przypisać do zmiennej typu int lub użyć w wyrażeniu.
Wywołujesz ją bez argumentów, np. int wynik = funkcja();. Próba wywołania w stylu funkcja(1) jest niezgodna z prototypem i w typowej konfiguracji kompilatora powinna zakończyć się błędem lub ostrzeżeniem.
Bo brak wartości zwracanej opisuje typ void po lewej stronie, np. void funkcja(void);. W pytaniu jest int, więc funkcja ma zwrócić wartość całkowitą. Nie wolno mieszać typu zwrotu z listą parametrów.
Najczęstsze pomyłki to: traktowanie void jako nazwy parametru, mylenie void w parametrach z void jako typem zwrotu oraz nierozróżnianie w C zapisu () i (void). Warto ćwiczyć czytanie prototypów.
Jeśli widzi prototyp (deklarację z listą parametrów), to ma podstawę do kontroli zgodności wywołania. Dlatego w praktyce prototypy w plikach nagłówkowych są tak ważne: pozwalają wykryć błędy wywołania wcześniej, na etapie kompilacji.
info

Około 65% zdających odpowiada poprawnie na to pytanie. średnie

Według specjalistów z branży: "Zapis int funkcja(void); to prototyp funkcji w C/C++."

Źródła:

  • cppreference.com: C function declarations (parameter list and (void) meaning) https://en.cppreference.com/w/c/language/function_declaration - accessed 2026-02-28
  • cppreference.com: C++ functions / function declarations (declarator and parameter list) https://en.cppreference.com/w/cpp/language/function - accessed 2026-02-28
  • GCC Online Documentation: Function Prototypes (argument checking, prototypes) https://gcc.gnu.org/onlinedocs/gcc/Function-Prototypes.html - accessed 2026-02-28

Materiały:

  • Dokumentacja języka C/C++ na cppreference (deklaracje funkcji i prototypy)
  • Materiały o prototypach funkcji i kontroli typów w kompilacji (np. GCC manual)
  • Ćwiczenia: rozpoznawanie typu zwrotu i listy parametrów w prototypach oraz poprawne wywołania

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego