Tekintsük a következő két definíciója main ().
int
main()
{
return
0;
}
a
int
main(
void
)
{
return
0;
}
What is the difference?
In C++, there is no difference, both are same.
mindkét definíció C-ben is működik, de a void második definíciója technikailag jobbnak tekinthető, mivel egyértelműen meghatározza, hogy a main csak paraméter nélkül hívható meg.
C-ben, ha egy függvény aláírása nem ad meg argumentumot, ez azt jelenti, hogy a függvény tetszőleges számú paraméterrel vagy paraméterek nélkül hívható meg. Például próbálja meg lefordítani és futtatni a következő két C programot (ne felejtse el menteni a fájlokat .c). Megjegyzés a különbség a két aláírás fun ().
void
fun() { }
int
main(
void
)
{
fun(10,
"GfG"
,
"GQ"
);
return
0;
}
a fenti program fordít és fut (lásd ezt), de a következő program nem fordítja (lásd ezt)
void
fun(
void
) { }
int
main(
void
)
{
fun(10,
"GfG"
,
"GQ"
);
return
0;
}
Unlike C, in C++, both of the above programs fails in összeállítás. A C++ – ban mind a fun (), mind a fun(void) ugyanaz.
tehát a különbség az, hogy C – ben az int main() tetszőleges számú argumentummal hívható meg, de az int main(void) csak argumentum nélkül hívható meg. Bár ez nem tesz különbséget a legtöbb alkalommal, az “int main(void)” használata ajánlott gyakorlat a C.
gyakorlat:
megjósolni a következő C programok kimenetét.
Question 1
#include <stdio.h>
int
main()
{
static
int
i = 5;
if
(--i){
printf
(
"%d "
, i);
main(10);
}
Issue 2
#include <stdio.h>
int
main(
void
)
{
static
int
i = 5;
if
(--i){
printf
(
"%d "
, i);
main(10);
}
}