vorrei conoscere il funzionamento tecnico di questo comando..

Nello specifico non capisco perchè mi da un problema,
esempio:

int main()
{
int x;
cout<<"inserisci x";
cin>>x;
return main();
}

tralasciando il fatto che queste istruzioni compongono un ciclo infinito (mi serve solo come esempio) in queste istruzioni "x" verrà logicamente ogni volta riassegnato.

int main()
{
char x[20];
cout << "inserisci x";
cin.getline (x,20);
return main();
}

utilizzando le stesse istruzioni ma con il char, "x[20]" verrà assegnato una sola volta e ogni volta che ricomincia il ciclo non mi farà più immettere dei nuovi valori..

Spero di essere stato abbastanza chiaro.. mi affido a voi