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

Usunięta treść Dodana treść
Linia 501:
* następnie przekazanie zebranych argumentów do funkcji, które będą ich używać
 
====Prototypy====
 
Istnieją dwa możliwe '''[[C/Funkcje#Deklarowanie_funkcji|prototypy (nagłówki)]]''' omawianej funkcji:
*<tt>int main(void);</tt>
*<tt>int main(int argc, char **argv);</tt> <ref>Czasami można się spotkać z prototypem <tt>int main(int argc, char **argv, char **env);</tt>, który jest definiowany w standardzie POSIX, ale wykracza już poza standard C.</ref>
====Argumenty====
 
Argumenty funkcji main:
* Pierwszy argument '''<tt>argc</tt>''' (ang. '''arg'''ument '''c'''ount )<ref>[https://ece.uwaterloo.ca/~dwharder/icsrts/C/05/ Command-line Arguments: main( int argc, char *argv[<nowiki>]</nowiki> ) by Douglas Wilhelm Harder from University of Waterloo Canada ]</ref> określa liczbę argumentów programu. Jest to liczba nieujemną. Argument programu to ciągów znaków przechowywanych jest w tablicy <tt>argv</tt>.
Linia 552:
 
 
====rekurencja====
 
 
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ć tak<ref>Jeżeli ktoś lubi ekstrawagancki kod ciało funkcji main można zapisać jako <tt>return *argv ? puts(*argv), main(argc-1, argv+1) : EXIT_SUCCESS;</tt>, ale nie radzimy stosować tak skomplikowanych i, bądź co bądź, mało czytelnych konstrukcji.</ref>:
Linia 568:
}
 
 
====Wartość====
Ostatnią rzeczą dotyczącą funkcji <tt>main</tt> jest '''zwracana''' przez nią '''wartość'''.<ref>[https://www.quora.com/If-we-use-void-main-why-does-the-function-give-same-output-like-int-main quora: If-we-use-void-main-why-does-the-function-give-same-output-like-int-main]</ref> Już przy omawianiu [[C/Pierwszy program|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_FAILURE<ref>Uwaga! Makra EXIT_SUCCESS i EXIT_FAILURE te służą tylko i wyłącznie jako wartości do zwracania przez funkcję <tt>main()</tt>. Nigdzie indziej nie mają one zastosowania.</ref> zdefiniowane 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 wartości są zależne od implementacji.