Perché quasi sicuramente (non ho tempo adesso di verificarlo) l'array su cui opera è un array di puntatori a char.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*)?
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.