IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

C++ Discussion :

Travailler directement sur un tableau passé en argument ...


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Points : 90
    Points
    90
    Par défaut Travailler directement sur un tableau passé en argument ...
    Bonjour à tous, je voudrais travailler sur un tableau passé en argument dans une fonction. Je sais comment procéder avec une variable normale (on la déclare comme ça : mais pour un tableau le compilateur de DevC++ me renvoie une erreur.

    Pourquoi??Comment faire??

    Je vous remaercie d'avance d'appaorter les réponses à ces deux questions.

    Spartan03!

    PS : Voici à quoi ressemble mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    void mafonction(int a, tLongueurs& tableau[100]) //tLongueurs est une classe que j'ai crée
    {//contenu de la fonction}
     
    int main()
    {
    int nombre;
    tLongueurs tabLong[100];
    mafonction(nombre, tabLong);
    return 0;
    }
    Et voici l'erreur renvoyée par mon compilateur :

    declaration of 'tableau' as array of references
    Voila tout!
    Pourquoi faire simple quand on peut faire compliqué!

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Un tableau est par défaut pris par référence (puisque son identifiant est un pointeur sur son premier élément). Donc vire simplement le & dans ta déclaration.

    Ceci-dit, c'est un sujet qui revient souvent sur ce forum, encore pas plus tard que la semaine dernière...


  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Loulou24 :
    Un tableau est par défaut pris par référence (puisque son identifiant est un pointeur sur son premier élément).
    Une référence n'est pas équivalente à un pointeur sur l'objet. c'est l'objet. De plus, ce n'est pas exact : l'identifiant d'un tableau n'est pas une référence ni un pointeur , c'est l'adresse de son premier élément.
    Dans le code présenté, ce n'est pas le tableau qui est passé en référence (ce qui n'est pas possible) mais il s'agit d'un tableau de références ce qui n'est pas, je crois, non plus possible
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Effectivement mes explications n'étaient pas super rigoureuses, je voulais juste faire passer l'idée.

    Et en effet,il est impossible de créer un tableau de références.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Points : 90
    Points
    90
    Par défaut
    Désolé d'avoir mis tant de temps à répondre.
    Si j'ai bien compris, la fonction ne crée pas un autre tableau mais travaille directement sur le tableau passé en argument?

    J'ai fait un petit programme pour étudier la question, le voici:

    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
    17
    #include <iostream.h>
     
    int fonction(int tab)
    {
    cin>>tab;
    cout<<"Tableau fonction : "<<tab<<endl;   
    }
     
    int main()
    {
    int tableau;
    cin>>tableau;
    fonction(tableau);
    cout<<"tableau main() : "<<tableau<<endl;
    system("pause");
    return 0;   
    }
    Il donne, le résultat suivant :

    6
    5
    Tableau fonction : 5
    tableau main() : 6
    Appuyez sur une touche pour continuer...
    En revanche si je le transforme en ceci :

    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
    17
    #include <iostream.h>
     
    int fonction(char tab[10])
    {
    cin>>tab;
    cout<<"Tableau fonction : "<<tab<<endl;   
    }
     
    int main()
    {
    char tableau[10];
    cin>>tableau;
    fonction(tableau);
    cout<<"tableau main() : "<<tableau<<endl;
    system("pause");
    return 0;   
    }
    il me donne le résultat attendu :

    hello
    bonjour
    Tableau fonction : bonjour
    tableau main() : bonjour
    Appuyez sur une touche pour continuer...
    Conclusion : Ca marche !!!

    Merci beaucoup pour votre aide!

    Spartan03
    Pourquoi faire simple quand on peut faire compliqué!

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

Discussions similaires

  1. Fonction recursive sur un tableau passé en parametre
    Par misterfed dans le forum Langage
    Réponses: 7
    Dernier message: 31/05/2012, 08h22
  2. Accès direct sur un tableau multidimensionnel
    Par kebab666 dans le forum Langage
    Réponses: 7
    Dernier message: 26/08/2011, 17h50
  3. Réponses: 4
    Dernier message: 18/09/2007, 10h46
  4. remplir un tableau passe en argument
    Par Art19 dans le forum Langage
    Réponses: 2
    Dernier message: 02/07/2007, 15h09
  5. Réponses: 13
    Dernier message: 07/05/2006, 11h54

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