Allora, ci sono un paio di cose su cui vorrei dei chiarimenti ma non riesco a trovare niente in giro per internet.

Prima cosa, quando io ho una funzione del tipo:

void (char s[]);

è equivalente a scrivere:

void (char *s);

?

E se sì, se una funzione ha come argomento un vettore, questo è sempre un puntatore al vettore che gli è stato passato oppure può essere una variabile automatica?

poi...

Ho trovato in un testo una cosa del genere (faccio il programma più breve possibile):

void inc(int &x) {x++;}

int main() {

int i=0;
inc(i);
cout<<i;
}

ho provato questo programma e il suo output è 1. In pratica ho capito come funziona, ma teoricamente qual'è il significato di scrivere int &x come arogomento della funzione?


un'ultimissima cosa

perché quando faccio un programma mi considera il carattere '\0' uguale a " " (spazio). Funziona così o è il mio compilatore/set di caratteri che non funziona? (kdevelop c++/ubuntu feisty).

grazie in anticipo per l'aiuto e scusate l'ignoranza