All implementations must allow int main()
and int main(int argc, char *argv[])
but can also allow other definitions of main(). The only requirement is that main() returns an int.
In Unix systems, it's common to have the one you mention. The 3rd argument contains the environment variables: a series of strings of the form variable=value