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
    Membre à l'essai
    Homme Profil pro
    Ingénieur
    Inscrit en
    février 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : février 2018
    Messages : 31
    Points : 24
    Points
    24

    Par défaut Récupérer les valeurs d'un tableau provenant d'un retour de fonction

    Bonsoir à tous,

    Je bloque sur la récupération des données d'un tableau construit dans une fonction à part. Le return ne fonctionne pas, normal. Je sais que c'est une particularité de C++, et que pour la contourner, il faut utiliser des pointeurs sur tableau, sachant que l'adresse d'un tableau correspond à l'adresse de la première case de ce tableau si j'ai bien compris. Mais je ne sais pas quoi faire de cette indication pour pouvoir récupérer les valeurs à n'importe quel endroit de mon projet...Pour des fonctions simples, j'ai détourné la chose en utilisant des structures. Mais pour le tableau, je sèche.

    Merci par avance pour les quelques pistes de résolutions que vous m'indiquerez peut-être.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    3 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués

    Informations forums :
    Inscription : juin 2009
    Messages : 3 982
    Points : 11 094
    Points
    11 094
    Billets dans le blog
    1

    Par défaut

    Bonsoir,

    Pourquoi utiliser un tableau au lieu d'un vecteur par exemple ?

    Pourrais-tu nous montrer un morceau de code minimaliste mettant en évidence ce que tu veux faire ?

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 525
    Points : 24 095
    Points
    24 095

    Par défaut

    Un tableau c'est std::vector.
    Cela dit sans code je parviens pas à comprendre ton problème... mais vues les discussions précédentes je m'attends au pire
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur
    Inscrit en
    février 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : février 2018
    Messages : 31
    Points : 24
    Points
    24

    Par défaut

    Dans une fonction à part, je crée mon tableau multidimensionnel dont les éléments ont pour nom T[i][j].

    Dans main, je veux pouvoir manipuler les T[i][j] mais ils valent zéro. Comment récupérer les T[i][j] dans main ?

    Je n'ai pas d'amorce de code.

  5. #5
    Expert éminent
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    juillet 2013
    Messages
    2 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : juillet 2013
    Messages : 2 715
    Points : 6 352
    Points
    6 352

    Par défaut

    Tu as menti How to access a local variable from a different function using pointers? (<- lien stackoverflow)


    The issue here is that when you create the local variable it is allocated on the stack and is therefore unavailable once the function finishes execution (implementation varies here). The preferable way would be to use malloc() to reserve non-local memory. the danger here is that you have to deallocate (free()) everything you allocated using malloc(), and if you forget, you create a memory leak.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur
    Inscrit en
    février 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : février 2018
    Messages : 31
    Points : 24
    Points
    24

    Par défaut

    Citation Envoyé par foetus Voir le message
    "J'ai menti" sympa l'entrée en matière.

    Merci pour le lien tout de même, que j'ai parcouru.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    4 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : février 2005
    Messages : 4 635
    Points : 10 775
    Points
    10 775

    Par défaut

    Vous confondez le C et le C++.
    On n'utilise pas, sauf si on n'est masochiste, de tableau C dans du code C++.
    Donc vous dégagez tous ces "T[i][j]" tout pourri et vous utilisez des "std::vector<T>".

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur
    Inscrit en
    février 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : février 2018
    Messages : 31
    Points : 24
    Points
    24

    Par défaut

    Bonsoir, oui en effet je viens de "découvrir" cela au fil de mes lectures. Merci pour le conseil.

    Sinon j'ai une petite difficulté avec un code basique, qui fonctionne lorsque les deux fonctions main et ma fonction "build" sont dans le fichier main, mais ne fonctionne plus lorsque je fais un header et un fichier cpp séparé :
    si vous avez une idée, je suis preneur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <QCoreApplication>
    #include <iostream>
    #include <vector>
    #include "b.h"
     
     
    int main()
    {
     
        std::vector<int> V;
     
        Build(V);
     
    std::cout << V[1] << std::endl;
     
            }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifndef B_H
    #define B_H
     
    #include <QCoreApplication>
    #include <iostream>
    #include <vector>
     
    std::vector<int> Build(std::vector<int>);
     
    #endif // B_H

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #include <QCoreApplication>
    #include <iostream>
    #include <vector>
    #include "b.h"
     
    std::vector<int> Build(std::vector<int> &V)
     
    {
     
    V.push_back(0);
    V.push_back(1);
    V.push_back(2);
    return V;
    }


    main.o*:-1: erreur : Dans la fonction «*main*»*:
    /home/js/TRAVAIL2/main.cpp:16: erreur : référence indéfinie vers «*Build(std::vector<int, std::allocator<int> >)*»
    :-1: erreur : collect2: error: ld returned 1 exit status

  9. #9
    Membre à l'essai
    Homme Profil pro
    Ingénieur
    Inscrit en
    février 2018
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : février 2018
    Messages : 31
    Points : 24
    Points
    24

    Par défaut

    C'est bon j'avais oublié le & après vector dans le h.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les valeurs de mon tableau
    Par Devilju69 dans le forum Langage
    Réponses: 5
    Dernier message: 19/11/2013, 17h57
  2. Réponses: 2
    Dernier message: 28/02/2012, 10h38
  3. Récupérer les valeurs d'un tableau
    Par fermat dans le forum Débutant
    Réponses: 3
    Dernier message: 02/02/2012, 15h17
  4. Récupérer les valeurs d'un tableau
    Par Grotoumaigr dans le forum PHP & PostgreSQL
    Réponses: 1
    Dernier message: 16/01/2012, 10h37
  5. Récupérer les valeurs dans un tableau
    Par ssxjim dans le forum java.util
    Réponses: 1
    Dernier message: 26/01/2011, 21h49

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