Bien programmer en langage C
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-29%
Le deal à ne pas rater :
PC portable – MEDION 15,6″ FHD Intel i7 – 16 Go / 512Go (CDAV : ...
499.99 € 699.99 €
Voir le deal

Passage par valeur/adresse

2 participants

Aller en bas

Passage par valeur/adresse Empty Passage par valeur/adresse

Message  QG 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

Revenir en haut Aller en bas

Passage par valeur/adresse Empty Re: Passage par valeur/adresse

Message  -ed- 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

-ed-
-ed-
Admin
Admin

Messages : 290
Date d'inscription : 26/05/2008
Age : 67
Localisation : Paris 14eme arrondissement (75, France)

http://bien-programmer.fr

Revenir en haut Aller en bas

Passage par valeur/adresse Empty Re: Passage par valeur/adresse

Message  QG 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

Revenir en haut Aller en bas

Passage par valeur/adresse Empty Re: Passage par valeur/adresse

Message  -ed- 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.


-ed-
-ed-
Admin
Admin

Messages : 290
Date d'inscription : 26/05/2008
Age : 67
Localisation : Paris 14eme arrondissement (75, France)

http://bien-programmer.fr

Revenir en haut Aller en bas

Passage par valeur/adresse Empty Re: Passage par valeur/adresse

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

Merci, j'ai compris.

QG
Bavard
Bavard

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

Revenir en haut Aller en bas

Passage par valeur/adresse Empty Re: Passage par valeur/adresse

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser