问题
I am a beginner in C language. Can anyone explain in detail using example how main(),int main(), void main(), main(void), void main(void), int main(void) work in C language? As in what is happeneing when we use void main() and what is happening when i use int main() in simple language and so on.
I know but cant understand what is it doing:
- main() - function has no arguments
- int main() - function returns int value
- void main() - function returns nothing etc.
when i write simple hello world using the int main() return 0 it still gives me the same output as when using void main()) so how does it work? What is its application?
回答1:
Neither main()
or void main()
are standard C. The former is allowed as it has an implicit int
return value, making it the same as int main()
. The purpose of main
's return value is to return an exit status to the operating system.
In standard C, the only valid signatures for main
are:
int main(void)
and
int main(int argc, char **argv)
The form you're using: int main()
is an old style declaration that indicates main
takes an unspecified number of arguments. Don't use it - choose one of those above.
回答2:
If you really want to understand ANSI C 89, I need to correct you in one thing; In ANSI C 89 the difference between the following functions:
int main()
int main(void)
int main(int argc, char* argv[])
is:
int main()
- a function that expects unknown number of arguments of unknown types. Returns an integer representing the application software status.
int main(void)
- a function that expects no arguments. Returns an integer representing the application software status.
int main(int argc, char * argv[])
- a function that expects argc number of arguments and argv[] arguments. Returns an integer representing the application software status.
About when using each of the functions
int main(void)
- you need to use this function when your program needs no initial parameters to run/ load (parameters received from the OS - out of the program it self).
int main(int argc, char * argv[])
- you need to use this function when your program needs initial parameters to load (parameters received from the OS - out of the program it self).
About void main()
In ANSI C 89, when using void main
and compiling the project AS -ansi -pedantic
(in Ubuntu, e.g)
you will receive a warning indicating that your main function is of type void and not of type int, but you will be able to run the project.
Most C developers tend to use int main()
on all of its variants, though void main()
will also compile.
来源:https://stackoverflow.com/questions/18928279/how-does-int-main-and-void-main-work