I see different people writing different statements for declaring main()

Like,

```
int main()

void main()

int main(void)

int main(int argc, char* argv[])

```

I mean when to pass arguments? what is the need of it? when to declare int as return type and when void?

I have just started practising coding when I see people writing different main() declaration I actually get puzzled.