Originariamente inviato da andbin
A parte che char[] maiuscolo (char[] testo) è una sintassi sbagliata, quindi:

char* maiuscolo (char testo[])
oppure, come preferisco io:
char* maiuscolo (char *testo)

Sul fatto di restituire un puntatore ... si può discutere fino a domani. In effetti, passando alla funzione un puntatore all'array non ci sarebbe alcun bisogno di "far ritornare" qualcosa.
Se si fa ritornare il puntatore dell'inizio stringa, in genere, lo si fa solo per convenienza se si vuole usare la stringa come argomento di un'altra espressione. Esempio:

printf ("%s\n", maiuscolo (s));

Nota che non puoi usare s come "lvalue". Se s è dichiarato char s[100];, non puoi fare assegnazioni ad s!!!
ma veramente volevo evitare apposta di tirare in ballo i puntatori dato che ha già confusione con i normali vettori

inoltre sintatticamente è correttissima la possibilità di ritornare degli array di char ... che poi la cosa sia carina o meno è tutt'altro discorso