In C/C++, the main function receives parameters which are of type char*.
char*
int main(int argc, char* argv[]){ return 0; }
These parameters are no different than any other function's parameters. If the architecture's calling sequence requires parameters to go through stack they are on stack. If, like on, x86-64 some parameters go in registers these also go in registers.