Différents types de passage de paramètres d’une fonction
Différents types de passage de paramètres d’une fonction Il existe deux modes de passages de paramètres : le passage par valeur et le passage par référence (ou par adresse) • Passage de paramètre par valeur Le passage de paramètre par valeur réalise une copie locale (au niveau de la fonction) de la valeur de la variable
Chapitre 9 Passage de paramètres
- En C++, 3 types de passage de paramètres: 1par valeur (existe aussi dans les langages C et Java ) par adresse (existe aussi dans le langage C) 1 par référence (uniquement dans les langages C++ et Java ) 1 Java : passage par valeur pour les primitifs et par référence pour les objets
Chapitre 3 : Procédures et fonctions
3-1 Passage paramètres par valeur C’est le mode de transmission par défaut, il y a de la valeur, des paramètres effectifs dans les variables copie locales issues des paramètres formels de la procédure ou de la fonction appelé
Les fonctions et les procédures en C - Paris Descartes
fonctions et procédures 15 Paramètres en entrée ou sortie (3/3) • En langage C, il n'existe pas d'autre paramètre de sortie que le paramètre de retour :-( • Passage de paramètre par valeur – On passe la valeur du paramètre – Implique que le paramètre est en entrée • Passage de paramètre par adresse – On passe l'adresse du
LIFAP6Sem1 20 21 Cours01
•Donnée : la procédure travaille sur une copie (passage par valeur) •Donnée-Résultat : la procédure travaille sur l’original (passage par adresse ou bien par référence) •Notion de pointeur et de référence •Arithmétique des pointeurs •Type Abstrait et Programmation Modulaire ( hpp cpp) •Nuance entre définition et
Variables (locales et globales), fonctions et procédures
Le passage de paramètres en entrée/sortie Passage de paramètre qui combine les deux précédentes A utiliser lorsque le sous-programme doit utiliser et/ou modifier la valeur de la variable du (sous-)programme appelant Comme pour le passage de paramètre en sortie, on ne peut pas utiliser de constante Par exemple :
Programmation sous Delphi - Laboratoire ERIC
• en fournissant l’adresse des valeurs (passage par adresse ou par référence), ce qui permet de modifier la valeur initiale ( paramètres en sortie ou en entrée/sortie ) Dans les exemples ci-dessus, les paramètres sont passés par valeur
Information, Calcul et Communication
valeur 00000000 valeur valeur Une adresse étant aussi un motif binaire, on l’écrit sous forme condensée en base 16 En C++ on peut manipuler des constantes en hexadécimal en indiquant 0x avant sa valeur Ex: 0xF0 L’adresse d’une variable est l’adresse du premier octet réservé pour mémoriser la valeurde cette variable
Information, Calcul et Communication
appel par valeur transmet la valeur de la variable à la fonction Pour les type de base il n’y a aucune différence de performance entre ces 2 options pour l’exécution de l’appel de la fonction -> privilégier le passage par valeur car plus local (plus sûr) Par contre, la transmission de la valeur d’un type T plus
[PDF] passage par valeur et par adresse en c
[PDF] passage par référence c++ open classroom
[PDF] acting out psychanalyse
[PDF] le salaire du sniper analyse
[PDF] le salaire du sniper texte pdf
[PDF] le salaire du sniper questionnaire
[PDF] redaction le salaire du sniper
[PDF] le salaire du sniper personnage principal
[PDF] passé composé terminaison
[PDF] passé composé cm2
[PDF] passé composé exercices pdf
[PDF] passé composé utilisation
[PDF] passé composé etre et avoir
[PDF] passé composé cm1
Chapitre 9 : Passage de paramètres 103
© Mohamed N. Lokbani v1.01 POO avec C++
Chapitre 9
Passage de paramètres
Chapitre 9 : Passage de paramètres 104
© Mohamed N. Lokbani v1.01 POO avec C++
1. Référence
- Référence est un alias à un espace mémoire. - Syntaxe: Type& var = valeur; #include© Mohamed N. Lokbani v1.01 POO avec C++
- Les variables de référence doivent être initialisées au moment de leurs déclarations.
#includeChapitre 9 : Passage de paramètres 106
© Mohamed N. Lokbani v1.01 POO avec C++
- Ne peuvent être réaffectées (réassignées) comme alias à d'autres variables. #includeChapitre 9 : Passage de paramètres 107
© Mohamed N. Lokbani v1.01 POO avec C++
- Une fois que la référence est déclarée alias d'une autre variable, toutes les opérations que l'on croit
effectuer sur l'alias (c'est à dire la référence) sont en fait exécutées sur la variable d'origine.
#includeChapitre 9 : Passage de paramètres 108
© Mohamed N. Lokbani v1.01 POO avec C++
- Danger ... // bugref.cpp #includeChapitre 9 : Passage de paramètres 109
© Mohamed N. Lokbani v1.01 POO avec C++
- Le compilateur a créé une variable temporaire (signalée dans le second warning), comme suit:
double i=0; int temp = i; int& valeur = temp; conversion double vers int et initialisation de temp avec la valeur de i valeur est une référence à temp (mais pas i) - Modifier valeur revient à modifier temp mais pas i car il n'y a aucun lien entre i et temp.- De ce fait, faire attention de déclarer le type de la référence identique à la variable référencée, pour éviter
des surprises lors de l'exécution de votre programme.Utilité
- En général, pour éviter d'utiliser les pointeurs.- En particulier, lors des passages de paramètres (des classes, des structures) afin d'éliminer la surcharge
causée par la copie de grandes quantités de données.Chapitre 9 : Passage de paramètres 110
© Mohamed N. Lokbani v1.01 POO avec C++
2. Passage de paramètres
- Pour rappel, il y a 2 types de paramètres: ▪ paramètres réels: dans l'appel de fonction ▪ paramètres formels: dans l'entête de la fonction - En C++, 3 types de passage de paramètres: ▪ par valeur (existe aussi dans les langages C et Java 1) ▪ par adresse (existe aussi dans le langage C) ▪ par référence (uniquement dans les langages C++ et Java 1)1 Java : passage par valeur pour les primitifs et par référence pour les objets.
Chapitre 9 : Passage de paramètres 111
© Mohamed N. Lokbani v1.01 POO avec C++
2.1. Passage de paramètres par valeurs
#includePile d'exécution
Paramètre formel
n est initialisé avec la valeur du paramètre réel k=7. increment(k,3) // k=7Devient
10 (7+3)
Chapitre 9 : Passage de paramètres 112
© Mohamed N. Lokbani v1.01 POO avec C++
2.2. Passage de paramètres par adresses
- Pour modifier le paramètre réel, on passe son adresse plutôt que sa valeur. #includeChapitre 9 : Passage de paramètres 113
© Mohamed N. Lokbani v1.01 POO avec C++
- Il y a un lien entre paramètre formel et paramètre réel. k = 7 ///////////////// n z=3Pile d'exécution
- Paramètre formel n est initialisé avec le contenu de l'adresse pointant sur k.- Il y a un lien potentiel entre les paramètres formels de la fonction et les paramètres réels.
- La gestion des adresses est effectuée par le programmeur (lourde et difficile à lire). increment(k,3) // k=7 devient10 (7+3)
Adresse pointant
Chapitre 9 : Passage de paramètres 114
© Mohamed N. Lokbani v1.01 POO avec C++
2.3. Passage de paramètres par référence
- En C++ le compilateur peut se charger lui même de la gestion des adresses. - Le paramètre formel est un alias de l'emplacement mémoire du paramètre réel. #includeChapitre 9 : Passage de paramètres 115
© Mohamed N. Lokbani v1.01 POO avec C++
2.4 Exemple du swap
- Que va afficher le programme suivant sur la sortie standard? Réécrire le code suivant dans les 2 cas
suivants: -1- void swap(int a,int& b){...} -2- void swap(int& a,int& b){...} #includeChapitre 9 : Passage de paramètres 116
© Mohamed N. Lokbani v1.01 POO avec C++
3. Passage d'un tableau
- 2 configurations possibles:3.1. Par pointeur
#include© Mohamed N. Lokbani v1.01 POO avec C++
3.2. Par semi-référence
#includeChapitre 9 : Passage de paramètres 118
© Mohamed N. Lokbani v1.01 POO avec C++
4. Quand utiliser une référence
(voir aussi P. Prados @ http://perso.club-internet.fr/pprados/Langage/CPP/ref/ref.html)4.1. Comme attribut
- Revoir le paragraphe sur les références.4.2. Comme un paramètre
- Une question difficile à trancher :▪ Si le paramètre ne doit être consulté que par la méthode, il faut recevoir une référence (assez
souvent constante).▪ Si le paramètre reçu par la méthode peut être absent, i.e. l'utilisateur peut envoyer la valeur