tableau et pointeurs c++
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

tableau et pointeurs c++



  1. #1
    invite0422bf25

    tableau et pointeurs c++


    ------

    Voici une fonction où Ensemble 3 est un tableau en sortant de la fonction et Cardinalite3 le nombre d'entiers dans ce tableau.

    void Unir (int Ensemble1[50], int Cardinalite1,int Ensemble2[50], int Cardinalite2, int * & Ensemble3, int & Cardinalite3)

    { Cardinalite3=0;
    Ensemble3=new int[Cardinalite1+Cardinalite2];
    for(int i=0; i<Cardinalite1; i++)
    InsererNombre(?);
    for(int i=0; i<Cardinalite2; i++)
    if(!EstDans(?)
    InsererNombre(?);
    }

    J'ai de la misère à comprendre int * & Ensemble3.
    Ce que je vois c'est qu'on passe un pointeur (*) de l'adresse (&) d'ensemble 3. Mais un pointeur n'est pas déjà un adresse? Si oui pourquoi on met le &?

    Merci d'avance pour votre réponse.

    -----

  2. #2
    inviteb9f49292

    Re : tableau et pointeurs c++

    Salut,
    attention, l'opérateur '&' dans une déclaration de fonction n'est pas l'opérateur "adresse de" mais déclare un passage par référence. Ainsi, si ta fonction doit modifier une variable, tu n'est pas obligé de passer un pointeur sur cette dernière. Un exemple pour illustrer:
    Code:
    static int fonction_ko (int n) {
        n++;
        return n;
    }
    
    static int fonction_ok_1 (int* n) {
        (*n) ++;
        return (*n);
    }
    
    static int fonction_ok_2 (int &n) {
        n ++;
        return n;
    }
    La première fonction travaille sur une copie locale de n, donc "n++" n'a aucune influence sur la valeur de n une fois sortie de la fonction. La seconde modifie le contenu de l'adresse de "n", la modification n'est donc pas locale mais on manipule un pointeur à l'intérieur de la fonction... Enfin la dernière travaille sur l'argument qu'on lui passe, sans effectuer de copie, donc les modifications survivent à la fonction, mais on ne manipule pas un pointeur à l'intérieur, ce qui facilite la vie du développeur.

    Maintenant, un pointeur est un argument comme un autre, donc si tu dois modifier la valeur du pointeur (et pas de son contenu) tu dois également passer l'adresse du pointeur, ou le passer par référence, pour que les modifs survivent à la fonction...

  3. #3
    invite0422bf25

    Re : tableau et pointeurs c++

    Très bonne explication!

    Merci beaucoup

Discussions similaires

  1. ?les pointeurs & les structures()
    Par invite5c6a01fc dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 08/12/2009, 22h14
  2. C : Problème avec des pointeurs sous MicroC/OS II
    Par invitef1d0ad93 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 01/11/2008, 17h06
  3. C: pointeurs, destructions
    Par inviteead871d5 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 15/08/2008, 10h54
  4. C : Pointeurs, chaines de caractères et affichage
    Par invitef1d0ad93 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 14/08/2008, 10h24
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...