Der Unterschied zwischen int main() und int main(void)
Beide, int main() und int main(void) mögen auf den ersten Blick gleich aussehen, aber es gibt einen signifikanten Unterschied zwischen den beiden in C, aber beide sind gleich in C++.
In C kann eine Funktion ohne Parameter eine beliebige Anzahl von Argumenten annehmen. Zum Beispiel kann eine Funktion, die als ‚foo()‘ deklariert ist, eine beliebige Anzahl von Argumenten in C annehmen (der Aufruf von foo(), foo(1), foo(‚A‘,1) führt zu keinem Fehler).
#include <stdio.h>void foo(){}int main(){ foo(); foo(1); foo(1,'A'); foo(1,'A',"ABC"); printf("ABC\n"); return 0;}
Der obige Code läuft ohne Fehler, weil eine Funktion ohne Parameter eine beliebige Anzahl von Argumenten annehmen kann, aber das ist in C++ nicht der Fall. In C++ werden wir einen Fehler erhalten. Schauen wir uns das an.
#include <iostream>using namespace std;void foo(){}int main(){ foo(1); cout << "ABC" << endl; return 0;}
Wenn wir den obigen Code ausführen, erhalten wir einen Fehler, weil wir kein Argument an die Funktion ‚foo‘ übergeben können.
Wenn wir jedoch foo(void) verwenden, kann die Funktion kein Argument annehmen und wir erhalten einen Fehler. Schauen wir uns das mal an.
#include <stdio.h>void foo(void){}int main(){ foo(1); printf("ABC\n"); return 0;}
Der obige Code gibt uns einen Fehler, weil wir ‚foo(void)‘ verwendet haben und das bedeutet, dass wir kein Argument an die Funktion ‚foo‘ übergeben können, wie wir es im Fall von ‚foo()‘ getan haben.
So sind sowohl foo(void) als auch foo() in C++ gleich, aber nicht in C. Dasselbe gilt auch für die Funktion ‚main‘. Die bevorzugte Form ist also int main(void), wenn main kein Argument entgegennimmt.
Unterschied zwischen int main() und void main() und main()
Wie jede andere Funktion ist auch main eine Funktion, allerdings mit der Besonderheit, dass die Programmausführung immer mit ‚main‘ beginnt. ‚int‘ und ‚void‘ sind ihre Rückgabetypen. Lassen Sie uns also alle drei der Reihe nach besprechen.
- void main – Der ANSI-Standard sagt „nein“ zu ‚void main‘ und daher kann seine Verwendung als falsch angesehen werden. Man sollte aufhören, ‚void main‘ zu benutzen, wenn man dies tut.
- int main – ‚int main‘ bedeutet, dass unsere Funktion am Ende der Ausführung eine ganze Zahl zurückgeben muss, und wir tun dies, indem wir am Ende des Programms 0 zurückgeben. 0 ist der Standard für die „erfolgreiche Ausführung des Programms“.
- main – In C89 ist der nicht spezifizierte Rückgabetyp standardmäßig int. Also ist main in C89 äquivalent zu int main. In C99 ist dies jedoch nicht erlaubt, so dass man int main verwenden muss.
Der bevorzugte Weg ist also int main.