• Aucun résultat trouvé

par adresse par valeur

N/A
N/A
Protected

Academic year: 2022

Partager "par adresse par valeur"

Copied!
1
0
0

Texte intégral

(1)

Passages et retours

par adresse par valeur

Pointeur (C/C++) void start() {

int a = 4;

Aff(a); →4 Pointeur(&a);

Aff(a); →5 }

void Pointeur(int *a) {

Aff(*b); →4

*b = *b + 1;

Aff(*b); →5 }

Référence (C++) void start() {

int a = 4;

Aff(a); →4 Reference(a);

Aff(a); →5 }

void Reference(int &b) {

Aff(b); →4 b = b + 1;

Aff(b); →5 }

Valeur (C/C++) void start() {

int a = 4;

Aff(a); →4 Valeur(a);

Aff(a); →4 }

void Valeur(int b) {

Aff(b); →4 b = b + 1;

Aff(b); →5 }

Retour Valeur (C/C++) void start()

{

int a = 4;

Aff(a); →4 a = Retour(a);

Aff(a); →5 }

int Valeur(int b) {

Aff(b); →4 b = b + 1;

Aff(b); →5 return b;

}

Variable d’origine modifiée

Notes : utiliser une référence ou un pointeur est équivalent. L’utilisation d’une référence requiert moins de symboles. A l’appel, un passage par référence ne se distingue par d’un passage par valeur !!! Le retour par valeur ne doit être utilisé que pour des types courts : int, float.

Class Id;

Class Id { public : ... };

Classe

Type Id(Type Id1,Type Id2);

Type Id(Type Id1,Type Id2) { …}

Fonction

extern Type Id;

Type Id;

Type Id = Id2;

Variable Avec Init

Déclaration Définition

Lilian BUZER - ESIEE Dept. Informatique Fiche rappel langage C/C++

int a = 4;

int * b = &a;

int ** c = &b;

int T[4];

4

a b

c m

a

m

b

T

Symboles & * . ->

Instructions :

&(var)

adresse de la variable

*(adr)

valeur présente à cette adr

obj.a

accès à la variable de l’objet obj.fnt()

appel de la fnt de l’objet pt->a

accès à la var de l’objet pointé pt->fnt()

accès à la fnt de l’objet pointé Déclarations :

int * p; pointeur sur un entier int & a = b; référence sur un entier T a; a est un objet de type T

Note : la déclaration d’une classe ne permet pas d’utiliser ses fonctions et ses paramètres

Passage d’objets en paramètres d’une fonction :

Il faut éviter de passer ou de retourner des objets par valeur car cela nécessite la création d’objets intermédiaires. Utilisez uniquement des pointeurs ou des références. Si vous vouliez garantir l’absence de modification des objets à l’intérieur de la fonction appelée, utilisez le qualificatif const : void fnt(const P3 & P); ou void fnt(const P3 *P);

Type ID[var];

Type ID[var][var];

Type * ID = new Type[var];

delete [] ID;

Type ID[cte];

Type ID[cte][cte];

int ID[ ] = { 4, 5 };

Dynamique Statique

Tableaux

int T[40][50] n’est pas équivalent à un int * * car il y a allocation d’un tableau 1D de 40*50 cases.

T[i][j] correspond à T[i+j*50], le type est int T[][50]

Références

Documents relatifs

[r]

[r]

´ Ecrire la forme attendue pour la d´ecomposition en ´el´ements simples puis effectuer cette derni`ere `a l’aide de Maple.. D´eterminer les ´equations en a, b et c dont les

comparaison de différentes races et de différents types de croisement montre que si les races pures se classent respectivement dans l’ordre Ham!shire,

agneaux croisés Berrichon, intermédiaires pour la longueur des gigots entre les agneaux de race pure et les agneaux croisés S Ol dhd 01 cn, le sont aussi pour le

La valeur des fréquences et pulsations de coupure ont été calculées avec f p =4Hz et non 4kHz comme indiqué dans l’énoncé de l’exemple (diapo 61). Il faut donc multiplier

L’analyse de la valeur consiste à optimiser la relation entre la satisfaction des besoins et l’utilisation de ressources?. Elle permet de s’assurer

Remarque : comme un seul nombre permet de savoir où l'on se trouve, on dit qu'on est en dimension 1.. Exercice 1 de