Il nome degli iteratori porta sicuramente confusione,anche l'uso diretto dei puntatori,forse sarebbe stato meglio scriverlo cosi:
void leggi_matrice (char* mat, int* countx, int* county)
{
for (int y=0; y < *county; y++)
{
for (int x=0; x < *countx ; x++)
{
cout << "Inserisci l'elemento (" << y+1 << ") ("<<x+1<<"): ";
cin >> mat[ (y * *countx) + x];
}
}
...
..
.