Passage par valeur/adresse

Voir le sujet précédent Voir le sujet suivant Aller en bas

Passage par valeur/adresse

Message  QG le Lun 3 Jan 2011 - 19:06

Bonjour,

Il y a des termes que je ne comprends pas.... Le passage par valeur (appelé aussi passage par copie) et le passage par adresse (qu'on nomme aussi passage par référence).
Si j'ai bien compris, le passage par valeur c'est quand on passe une valeur autre qu'une adresse et le passage par adresse c'est quand on passe une adresse ?

Donc le langage C permet de faire des passages par valeur et par adresse ?

Merci d'avance !

QG
Bavard
Bavard

Messages : 11
Date d'inscription : 19/10/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Passage par valeur/adresse

Message  -ed- le Lun 14 Fév 2011 - 16:17

Le langage C ne permet que des passages explicites par valeur.

Code:
f(a);
f(123);

mais cette valeur peut être une adresse explicite.

Code:
f(&a);

Dans d'autres langages, une syntaxe particulière permet de passer l'adtresse d'une variable (sa 'référence) de façon implicite, sans qu'on ai l'impression de passer son adresse.

Code:
f(a);

Je trouve ça assez troublant ...

A noter quand même que c'est un peu ce qui se passe en C avec les tableaux. Le type du paramètre est 'adresse d'un élément du tableau, mais l'appel se fait avec le nom du tableau, l'adresse étant passée de manière implicite.

Code:
f(a);

en fait, il faut lire

Code:
f(a+0);

ce qui signifie qu'on passe l'adresse du premier élément du tableau.

on peut d'ailleurs passer l'adresse d'un autre élément :

Code:
 f(a+2);

l'adresse du 3 ème élément


_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Re: Passage par valeur/adresse

Message  QG le Mar 15 Fév 2011 - 15:28

D'accord, donc le C++ permet le passage par adresse (référence) grâce à l'utilisation des références ?

QG
Bavard
Bavard

Messages : 11
Date d'inscription : 19/10/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Passage par valeur/adresse

Message  -ed- le Mar 15 Fév 2011 - 16:31

Oui, tout à fait.

En C++ (que je connais mal), on code
Code:

f(int &a)
{
  a = 0;
}

et on appelle

Code:
  int x;

  f(x);
x vaut 0.

Alors qu'en C, on ferait :
Code:

f(int*pa)
{
  *pa = 0;
}

et on appelle

Code:
  int x;

  f(&x);
x vaut 0.



_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Re: Passage par valeur/adresse

Message  QG le Sam 19 Fév 2011 - 12:32

Merci, j'ai compris.

QG
Bavard
Bavard

Messages : 11
Date d'inscription : 19/10/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Passage par valeur/adresse

Message  Contenu sponsorisé Aujourd'hui à 15:24


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum