C/Funkcje: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m →‎usage: nowa funkcja
Linia 173:
int scanf(const char *format, ...);
 
Jak widzisz w deklaracji zostały użyte trzy kropki. Otóż język C ma możliwość przekazywania teoretycznie nieograniczonej liczby argumentów do funkcji (jedynym ograniczeniem jest rozmiar [[w:Stos (informatyka)|stosu]] programu).
Takie funkcje w języku angielskim to '''Variadic functions'''<ref>[https://en.cppreference.com/w/c/variadic Variadic functionsin cppreference]</ref>

Cała zabawa polega na tym, aby umieć dostać się do odpowiedniego argumentu oraz poznać jego typ (używając funkcji <tt>printf</tt>, mogliśmy wpisać jako argument dowolny typ danych). Do tego celu możemy użyć wszystkich ciekawostek, zawartych w pliku nagłówkowym stdarg.h.
 
Załóżmy, że chcemy napisać prostą funkcję, która dajmy na to, mnoży wszystkie swoje argumenty (zakładamy, że argumenty są typu int). Przyjmujemy przy tym, że ostatni argument będzie 0. Będzie ona wyglądała tak: