Différence entre pointeur et tableau, allocation dynamique et statique - C - Programmation
Marsh Posté le 26-03-2009 à 18:44:57
Caille Rotie a écrit : je souhaite faire un qsort qui appelle une fonction de comparaison (sur une chaine de caractère allouée dynamiquement qui est dans une structure). Mon compilateur me dit que j'ai un déréférencement, et sortie du code tout fait ( return( strcmp(*(char **)sp1, *(char **)sp2) ); ) je suis perdue dans les typages. |
Le fait que le tableau soit alloué ou pas n'a pas d'importance pour qsort(). L'important est :
1 - de passer les bons paramètres à qsort()
2 - de comprendre la signification des paramètres de la fonction de comparaison que l'on doit écrire.
http://mapage.noos.fr/emdel/qsort.htm
Ensuite, fait de ton mieux et poste ton code si tu as un problème.
Marsh Posté le 26-03-2009 à 20:56:36
Merci pour le lien, clair et explicite.
Ca a pas marché tout de suite, mais j'ai fini par corriger des problèmes de déclaration, et ça passe.
Merci beaucoup et tant pis pour le coup des pointeurs vs tableaux, j'aurais bien l'occasion de m'y recoller à une nouvelle occasion.
Marsh Posté le 26-03-2009 à 23:41:00
Note que sur le lien d'Emmanuel figure également un excellent chapitre traitant justement de ce sujet : http://mapage.noos.fr/emdel/notes.htm#tableau
Marsh Posté le 26-03-2009 à 18:35:47
Bonjour à tous.
Après mon entrée lamentable sur ce forum, (http://forum.hardware.fr/hfr/Progr [...] m#t1866287) j'ai découvert un truc dont j'avais pas idée : un tableau n'est pas un pointeur !
Alors on pourra dire toute ce qu'on veut sur mon école d'ingénieur, mais là, je tombe des nues, j'y comprends rien malgré ma bonne volonté à lire (et essayer de comprendre) les multiples messages référents à ce qui visiblement est quasiment un troll sur ce forum. (que j'ai essayé de référencer ici également).
Quand aux docs sur le net, j'ai rien trouvé qui m'explique cela correctement...
En fait, ce qui me chagrinne dans cette histoire, c'est que je n'ai entendu nulle part dans ces topics parler d'allocation. Or, cela me semble la base de tout !!
Pour plagier Ace17 http://forum.hardware.fr/hfr/Progr [...] 8905_1.htm :
Dites moi si je me trompe.
Je me serait très bien passé de cette polémique, mais je souhaite faire un qsort qui appelle une fonction de comparaison (sur une chaine de caractère allouée dynamiquement qui est dans une structure). Mon compilateur me dit que j'ai un déréférencement, et sortie du code tout fait ( return( strcmp(*(char **)sp1, *(char **)sp2) ); ) je suis perdue dans les typages.
Merci à tous ceux qui accepterons d'éclairer ma lanterne.