C++, variables locales et et leurs portées
Résolu
xc35
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
xc35 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
xc35 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- C++, variables locales et et leurs portées
- Adresses ip locales - Guide
- Actualités locales - Guide
- Module d expérience locale français c est quoi ✓ - Forum Windows
- Algorithme permutation 3 variables - Forum Programmation
- Javascript : prompt() et variables ✓ - Forum Javascript
2 réponses
Bonjour
C'est justement le rôle de l'instruction return : elle crée une copie de la valeur à renvoyer (que ce soit un int ou un vecteur, ou une constante ou tout ce que tu veux)
Celui qui appelle la fonction récupère un résultat (cette copie), mais il n'accède pas à la variable locale elle-même, qui est d'ailleurs déjà détruite quand le contrôle retourne à l'appelant.
C'est justement le rôle de l'instruction return : elle crée une copie de la valeur à renvoyer (que ce soit un int ou un vecteur, ou une constante ou tout ce que tu veux)
Celui qui appelle la fonction récupère un résultat (cette copie), mais il n'accède pas à la variable locale elle-même, qui est d'ailleurs déjà détruite quand le contrôle retourne à l'appelant.
Sauf en cas de passage par référence.
?? ce que j'ai écrit reste vrai même en cas de passage par référence.
Car la valeur renvoyée par une fonction est celle indiquée dans un return. Quand on utilise un passage par référence, la fonction ne renvoie pas une valeur, elle modifie une variable, ce qui est différent.. D'ailleurs la question de xc35 portait sur le fait de faire un return sur une variable locale, qu'il assimilait au fait que l'appelant avait accès à la variable, alors qu'il n'a accès qu'à sa valeur.
Et si le passage par référence peut éventuellement permettre à l'appelant d'avoir accès à une variable à portée locale, encore faut-il avoir prévu de la déclarer static, sous peine d'avoir un magnifique plantage.
Car la valeur renvoyée par une fonction est celle indiquée dans un return. Quand on utilise un passage par référence, la fonction ne renvoie pas une valeur, elle modifie une variable, ce qui est différent.. D'ailleurs la question de xc35 portait sur le fait de faire un return sur une variable locale, qu'il assimilait au fait que l'appelant avait accès à la variable, alors qu'il n'a accès qu'à sa valeur.
Et si le passage par référence peut éventuellement permettre à l'appelant d'avoir accès à une variable à portée locale, encore faut-il avoir prévu de la déclarer static, sous peine d'avoir un magnifique plantage.