DALSZE INFORMACJE 83 W tym przypadku nie jesteśmy w stanie zamienić a i b miejscami, bo obie funkcje korzystają z siebie nawzajem. Rozwiązaniem jest wcześniejsze zadeklarowanie funkcji. Deklaracja funkcji (zwana czasem prototypem ) to po prostu przekopiowana pierw- sza 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 pominąć nazwy parametrów funkcji: int b(int); Bardzo częstym zwyczajem jest wypisanie przed funkcją main samych prototypów funkcji, by ich definicje umieścić po definicji funkcji main, np.: int a(void); int b(int p); int main() { return b(1); } 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 właśnie 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łeś zapewne, że używając funkcji printf() lub scanf() po argumencie zawie- rającym tekst z odpowiednimi modyfikatorami mogłeś podać praktycznie nieograni- czoną liczbę argumentów. Zapewne deklaracja obu funkcji zadziwi Cię jeszcze bardziej: int printf(const char *format, ...); int scanf(const char *format, ...); Jak widzisz w deklaracji zostały użyte 3 kropki. Otóż język C ma możliwość prze- kazywania nieograniczonej liczby argumentów do funkcji (tzn. jedynym ograniczeniem
... zobacz całą notatkę
Komentarze użytkowników (0)