void main() is equiv to
void main(void)
It means the main progam function takes no args and returns no value. It's usefullness is only in its side-effects, the visible things that it does while it is running.
int main(void)
means the main program takes no arguments, but does return an integer value to the program that called it.
With "int" there, somewhere in "main" should be a return statement, at least "return 0;" or "main=0;". I forget which form C uses.
The return value is often used to return a success/failure code to the program that called this function. Success is usually "no error", i.e., 0. Anything not equal to 0 then indicates that some error situation was noticed by main.
So what calls function "main"? the op-sys? Not sure what is the point of informing the opsys about a program's problems. Maybe receiving a return-value informs the opsys that it can clean up any system-allocated resources that program main requested (like extra RAM, or graphics windows), because that program is finished, has quit.
Does that make sense?