Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : mars 2017
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Problème dans le passage par valeur d'une struct
    Bonsoir à tous,

    Je tiens avant tout à m'excuser si je suis un peu amateur, je n'ai qu'une connaissance partielle et autodidacte du C !
    Voilà, je suis obligé de travailler sur des tableaux de struct arbitraire, et j'ai essayé de bricoler quelques fonctions pour me faciliter la vie. Pour cela, j'ai défini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct Tableau {
        int size_array ; // nombre d'éléments dans le tableau
        int size_item ; // taille en octets d'un élément
        void * array ; // ARGH, je sais, mais j'ai pas le choix
    } ;
    Tout marche bien (création dynamique, accès aux éléments, modification des éléments), sauf une fonction de tri que j'ai voulu implémenter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct Tableau tri_insertion(struct Tableau tab, int (*f)(const void *, const void *))
    Où f pointe vers la relation d'ordre adaptée à la structure (oui, je suis habitué aux langages fonctionnels ).
    Dans le contexte main, j'appelle tri_selection sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {.size_array=5, .size_item=sizeof(int), .array //pointe vers le tableau {5,4,3,2,1} }
    Néanmoins, le débogueur indique que dans le contexte de tri_selection, les valeurs de ma struct ont été complètement modifiées. Et je n'ai pas de stack overflow (ce qui ne veut rien dire, je sais).

    Où ai-je fait une bêtise ? Merci d'avance !!!

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    27 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 27 113
    Points : 40 515
    Points
    40 515
    Par défaut
    Tu as un tableau de deux valeurs, mais une taille de 5?

    Aussi, pour le pointeur de fonction de comparaison, les pointeurs en entrée devraient être déclarés const vu que ta fonction de comparaison n'est pas censée modifier les valeurs)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : mars 2017
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Tu as un tableau de deux valeurs, mais une taille de 5?

    Aussi, pour le pointeur de fonction de comparaison, les pointeurs en entrée devraient être déclarés const vu que ta fonction de comparaison n'est pas censée modifier les valeurs)
    Tout à fait, erreurs rectifiées !

Discussions similaires

  1. Problème de passage par valeur
    Par PigKey6 dans le forum C#
    Réponses: 4
    Dernier message: 27/11/2011, 20h42
  2. Réponses: 1
    Dernier message: 27/01/2011, 13h47
  3. [MySQL] Problème dans ma boucle - ne prend qu'une valeur au lieu de tous
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/03/2010, 23h35
  4. Réponses: 3
    Dernier message: 25/05/2006, 19h50
  5. [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/05/2006, 23h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo