Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modification globale d'un tableau

Question basique sur les tableaux

Sujet résolu
    20 mars 2018 à 15:49:05

    Bonjour,

    J'ai du mal à comprendre qqchose. Lorsque je défini une fonction qui ne renvoie rien et qui accepte un tableau, enfin le pointeur vers son premier element, par exemple:

    void ma_fonction(int * tab, int n){
    
        tab[0]  =+ 1;
    
    }


    La modification a une portée locale. Est-ce possible de modifier les valeurs du tableaux avec une portée globale ?

    Par exemple pour passer un entier à une fonction, on peut le faire et par valeur et par adresse :

    // Passage par valeur (modif locale)
    void fonction_int_val(int v){
        printf("val+1 : %i \n", v+1 );
    }
    
    // Passage par adresse (modif globale)
    void fonction_int_adr(int * v){
        printf("val+1 : %i \n", *v+1 );
    }

    Merci d'éclairer ma lanterne.

    matop

    -
    Edité par matop 20 mars 2018 à 15:49:22

    • Partager sur Facebook
    • Partager sur Twitter
      20 mars 2018 à 15:53:17

      Hello,

      Tu l'as toi-même écrit: int *tab, et 

      matop a écrit:

      ....qui accepte un tableau, enfin le pointeur vers son premier element....

      Donc, toute modification faites à tab[x] est effectuée sur le même élément qui se trouve dans les fonctions appelantes.

      -
      Edité par edgarjacobs 20 mars 2018 à 15:54:46

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        20 mars 2018 à 16:03:27

        matop a écrit:

        Bonjour,

        J'ai du mal à comprendre qqchose. Lorsque je défini une fonction qui ne renvoie rien et qui accepte un tableau, enfin le pointeur vers son premier element, par exemple:

        void ma_fonction(int * tab, int n){
        
            tab[0]  =+ 1;
        
        }


        La modification a une portée locale.

        Bonjour, tu as dû mal observer, car la modification ici démontrée reste observable même une fois la fonction terminée.

        Note: Cette fonction ne retourne rien, mais elle a un effet de bord (qui est de modifier le int pointé par tab).

        -
        Edité par Marc Mongenet 20 mars 2018 à 16:03:37

        • Partager sur Facebook
        • Partager sur Twitter
          20 mars 2018 à 16:07:40

          mmh, effectivement j'ai bugé. La modif se voit bien à l'extérieur de la fonction

          merci pour vos réponses rapides :)

          -
          Edité par matop 20 mars 2018 à 16:08:55

          • Partager sur Facebook
          • Partager sur Twitter

          Modification globale d'un tableau

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown