2013-09-21 20 views
10

Jestem początkującym w języku C. Czy ktoś może wyjaśnić szczegółowo na przykład, w jaki sposób main(), int main(), void main(), main (void), void main (void), int main (void) działa w języku C? Jak w tym, co się dzieje, gdy używamy void main() i co się dzieje, kiedy używam int main() w prostym języku i tak dalej.
wiem, ale nie mogę zrozumieć, co to robi:jak działa int main() i void main()

  1. main() - funkcja nie ma argumentów
  2. int main() - funkcja zwraca int wartość
  3. void main() - funkcja zwraca nic etc

kiedy piszę prosty świat hello za pomocą powrotu int main() 0 nadal daje mi to samo wyjście jak przy użyciu void main()), więc jak to działa? Jaka jest jego aplikacja?

+5

'void main()' jest przydatna głównie jako wskazanie, że używasz podręcznik napisany przez kogoś, kto nie zna języka C bardzo dobrze. Spośród formularzy wymienionych, poprawne jest tylko 'int main (void)'. (Nie jest to * całkiem * takie proste, ale na razie wystarczająco blisko). –

Odpowiedz

19

Ani main() lub void main() są standardowe C były dozwolone jest, jak to jest domniemane wartość int powrotną, dzięki czemu takie same jak int main(). Celem wartości zwracanej main jest zwrócenie exit status do systemu operacyjnego.

W standardowym C, jedyne ważne podpisy dla main są:

int main(void) 

i

int main(int argc, char **argv) 

Formularz używasz: int main() jest deklaracja stylu starego wskazująca main trwa nieokreślona liczba argumentów. Nie używaj go - wybierz jedną z powyższych.

+1

W CV można po prostu zachować kompatybilność wstecz ze starym kodem napisanym przy systemie operacyjnym, który nie wymagał statusu wyjścia. Zawsze powinieneś zwracać wartość całkowitą w 'głównym' – Jack

+2

@Jack: 'void main()' nie jest dla wstecznej kompatybilności z niczym. Ten sam standard, który po raz pierwszy wprowadził słowo kluczowe "void", określił typ zwrotu 'main' jako' int'. –

+0

int main (int argc, const char ** argv, const char ** env) – dns

0

int main powraca integer Wartość

podczas gdy

void main powraca nothing

8

Jeśli naprawdę chcesz zrozumieć ANSI C 89, muszę cię poprawić jedną rzecz; ANSI C 89 różnica między następującymi funkcjami:

int main() 
int main(void) 
int main(int argc, char* argv[]) 

jest:

int main()

  • funkcją oczekuje nieznaną liczbę argumentów nieznanych typów. Zwraca liczbę całkowitą reprezentującą status oprogramowania użytkowego.

int main(void)

  • funkcja, która spodziewa się żadnych argumentów. Zwraca liczbę całkowitą reprezentującą status oprogramowania użytkowego.

int main(int argc, char * argv[])

  • funkcją oczekuje argc liczbę argumentów i argv [] argumentów. Zwraca liczbę całkowitą reprezentującą status oprogramowania użytkowego.

O przy użyciu każdej z funkcji

int main (void)

  • trzeba korzystać z tej funkcji, gdy program nie wymaga początkowych parametrów, aby uruchomić/obciążenia (parametry otrzymane z systemu operacyjnego - poza samym programem).

int main (int argc, char * argv [])

  • trzeba korzystać z tej funkcji, gdy program potrzebuje początkowe parametry do załadowania (parametry otrzymanych od systemu operacyjnego - out programu samodzielnie).

O void main()

w ANSI C 89, przy użyciu void main i kompilowania projektu jako -ansi -pedantic (w Ubuntu, na przykład) otrzymasz ostrzeżenie wskazuje, że główną funkcją jest typu void i nie stanowi wpisz int, ale będziesz mógł uruchomić projekt. Większość programistów C używa wersji int main() we wszystkich swoich wariantach, ale kompiluje także void main().

Nadzieję, że pomaga!

Powodzenia i szczęśliwy kodowania

Powiązane problemy