Diferența dintre int main() și int main(void)
Atât int main() cât și int main(void) pot părea la fel la prima vedere, dar există o diferență semnificativă între cele două în C, dar ambele sunt la fel în C++.
În C, o funcție fără parametru poate primi orice număr de argumente. De exemplu, o funcție declarată ca ‘foo()’ poate lua orice număr de argumente în C (apelarea foo(), foo(1), foo(‘A’,1) nu va da nici o eroare).
#include <stdio.h>void foo(){}int main(){ foo(); foo(1); foo(1,'A'); foo(1,'A',"ABC"); printf("ABC\n"); return 0;}
Codul de mai sus rulează bine fără a da nici o eroare deoarece o funcție fără nici un parametru poate lua orice număr de argumente, dar acest lucru nu este cazul în C++. În C++, vom primi o eroare. Să vedem.
#include <iostream>using namespace std;void foo(){}int main(){ foo(1); cout << "ABC" << endl; return 0;}
Executarea codului de mai sus ne va da o eroare deoarece nu putem trece nici un argument funcției ‘foo’.
Cu toate acestea, folosind foo(void) restricționează funcția să primească orice argument și va da o eroare. Să vedem.
#include <stdio.h>void foo(void){}int main(){ foo(1); printf("ABC\n"); return 0;}
Codul de mai sus ne va da eroare pentru că am folosit ‘foo(void)’ și asta înseamnă că nu putem trece niciun argument funcției ‘foo’ așa cum făceam în cazul lui ‘foo()’.
Deci, atât foo(void), cât și foo() sunt identice în C++, dar nu și în C. Același lucru este valabil și în cazul funcției ‘main’. Așadar, forma preferată de utilizat este int main(void) dacă main nu primește nici un argument.
Diferența dintre int main() și void main() și main()
Ca orice altă funcție, main este de asemenea o funcție, dar cu o caracteristică specială, și anume că execuția programului începe întotdeauna de la ‘main’. ‘int’ și ‘void’ sunt tipurile sale de retur. Așadar, să le discutăm pe toate trei, una câte una.
- void main – Standardul ANSI spune „nu” la ‘void main’ și, prin urmare, utilizarea lui poate fi considerată greșită. Ar trebui să nu se mai folosească „void main” dacă se face acest lucru.
- int main – „int main” înseamnă că funcția noastră trebuie să returneze un număr întreg la sfârșitul execuției și facem acest lucru prin returnarea lui 0 la sfârșitul programului. 0 este standardul pentru „executarea cu succes a programului”.
- main – În C89, tipul de retur nespecificat este implicit int. Așadar, main este echivalent cu int main în C89. Dar în C99, acest lucru nu este permis și, prin urmare, trebuie să se folosească int main.
Deci, modul preferat este int main.
.