Originariamente inviato da spiderontheweb
Perchè in un programma che ho trovato sul forum:
1) nella funzione strcmp2 usa *(char **)s1?
2) nella qsort come terzo parametro scrive sizeof(char*)?
Perché quasi sicuramente (non ho tempo adesso di verificarlo) l'array su cui opera è un array di puntatori a char.

Nota che:

char *stringhe[3] = { "uno", "due", "tre" };

è molto diverso da:

char stringhe[3][10] = { "uno", "due", "tre" };

Nel primo caso ogni elemento dell'array è un puntatore (char*), quindi la qsort deve "sapere" di dover scambiare 2 puntatori (da qui il sizeof (char*)).

Nel secondo caso ogni elemento dell'array è un vettore di 10 caratteri (la stringa ovviamente può essere terminata prima ), quindi la qsort deve scambiare tutti i 10 caratteri delle 2 stringhe comparate.

Sono cose diverse.