83
DALSZE INFORMACJE
W tym przypadku nic jesteśmy w stanie zamienić a i b miejscami, Ik> obie funkcje korzystają z siebie nawzajem. Rozwiązaniem jest wcześniejsze zadeklarowanie funkcji. Deklaracja fmikcji (zwana czasem prototypem) to po prostu przekopiowana pierwsza linijka funkcji (przed otwierającym nawiasem klamrowym) z dodatkowo dodanym średnikiem na końcu. W naszym przykładzie wystarczy na samym początku wstawić:
int b(int p);
W deklaracji można (>ominąć nazwy parametrów funkcji: int b(int);
Bardzo częstym zwyczajem jest wypisanie przed funkcją main samych prototypów funkcji, by ich definicje umicśck: po definicji funkcji main, np.:
int a(void); int b(int p);
int main()
return b(l);
int a() return b(0);
int b(int p)
if( p — 0 ) return 1; else
return a();
Z poprzednich rozdziałów pamiętasz, że na początku programu dołączaliśmy tzw. pliki nagłówkowe. Zawierają one wlaśmc prototypy funkcji i ułatwiają pisanie dużych programów. Dalsze informacje o plikach nagłówkowych zawarte są w rozdziale Tworzenie bibliotek.
Zmienna liczba parametrów
Zauważyłoś zapewne, że używając funkcji printf() lub scanf() po argumencie zawierającym tekst z odi>owicdniuii modyfikatorami mogłeś |X)daó praktycznie nieograniczoną liczbę argumentów. Zapewne deklaracja obu funkcji zadziwi Cię jeszcze bardziej:
int printf(const char *format, ...); int scanfCconst char *format, ...);
Jak widzisz w deklaracji zostały użyte 3 kropki. Otóż język C ma możliwość przekazywania nieograniczonej liczby argumentów do funkcji (tzn. jedynym ograniczeniem