80 ROZDZIAŁ 11. FUNKCJE Na razie nie musisz rozumieć powyższych kodów i opisów, gdyż odwołują się do pojęć takich jak tablica oraz wskaźnik, które opisane zostanÄ
w dalszej czÄÅci podrÄcz- nika. Co ciekawe, funkcja main nie różni siÄ zanadto od innych funkcji i tak jak inne może woÅaÄ sama siebie (patrz rekurencja niżej), przykÅadowo powyższy program można zapisaÄ tak4: #include #include int main(int argc, char **argv) { if (*argv) { puts(*argv); return main(argc-1, argv+1); } else { return EXIT_SUCCESS; } } OstatniÄ
rzeczÄ
dotyczÄ
cÄ
funkcji main jest zwracana przez niÄ
wartoÅÄ . Już przy omawianiu pierwszego programu wspomniane zostaÅo, że jedynymi wartoÅciami, które znaczÄ
zawsze to samo we wszystkich implementacjach jÄzyka sÄ
0, EXIT SUCCESS i EXIT F AILURE5 zdeï¬niowane w pliku nagÅówkowym stdlib.h. WartoÅÄ 0 i EXIT SUCCESS oznaczajÄ
poprawne zakoÅczenie programu (co wcale nie oznacza, że makro EXIT SUCCESS ma wartoÅÄ zero), natomiast EXIT FAILURE zakoÅczenie bÅÄdne. Wszystkie inne war- toÅci sÄ
zależne od implementacji. Dalsze informacje Poniżej przekażemy ci parÄ bardziej zaawansowanych informacji o funkcjach w C, jeÅli nie masz ochoty wgÅÄbiaÄ siÄ w szczegóÅy, możesz spokojnie pominÄ
Ä tÄ czÄÅÄ i wróciÄ tu później. Jak zwróciÄ kilka wartoÅci? JeÅli chcesz zwróciÄ z funkcji kilka wartoÅci, musisz zrobiÄ to w trochÄ inny sposób. Generalnie możliwe sÄ
dwa podejÅcia: jedno to âupakowanieâ zwracanych wartoÅci â można stworzyÄ tak zwanÄ
strukturÄ , która bÄdzie przechowywaÅa kilka zmiennych (jest to opisane w rozdziale Typy zÅożone). Prostszym sposobem jest zwracanie jednej z wartoÅci w normalny sposób a pozostaÅych jako parametrów. Za chwilÄ dowiesz siÄ, jak to zrobiÄ; jeÅli chcesz zobaczyÄ przykÅad, możesz przyjrzeÄ siÄ funkcji scanf() z biblioteki standardowej. 4Jeżeli ktoÅ lubi ekstrawagancki kod ciaÅo funkcji main można zapisaÄ jako return *argv ? puts(*argv), main(argc-1, argv+1) : EXIT SUCCESS;, ale nie radzimy stosowaÄ tak skomplikowa- nych i, bÄ
dź co bÄ
dź, maÅo czytelnych konstrukcji. 5Uwaga! Makra EXIT SUCCESS i EXIT FAILURE te sÅużÄ
tylko i wyÅÄ
cznie jako wartoÅci do zwracania przez funkcjÄ main(). Nigdzie indziej nie majÄ
one zastosowania.
(…)
… <stdlib.h>
int main(int argc, char **argv) {
if (*argv) {
puts(*argv);
return main(argc-1, argv+1);
} else {
return EXIT_SUCCESS;
}
}
Ostatnią rzeczą dotyczącą funkcji main jest zwracana przez nią wartość. Już przy
omawianiu pierwszego programu wspomniane zostało, że jedynymi wartościami, które
znaczą zawsze to samo we wszystkich implementacjach języka są 0, EXIT SUCCESS i
EXIT FAILURE5 zdefiniowane w pliku…
... zobacz całą notatkę
Komentarze użytkowników (0)