Passage par valeur/adresse
2 participants
Page 1 sur 1
Passage par valeur/adresse
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 !
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
- Messages : 11
Date d'inscription : 19/10/2010
Re: Passage par valeur/adresse
Le langage C ne permet que des passages explicites par valeur.
mais cette valeur peut être une adresse explicite.
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.
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.
en fait, il faut lire
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 :
l'adresse du 3 ème élément
- 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
Re: Passage par valeur/adresse
D'accord, donc le C++ permet le passage par adresse (référence) grâce à l'utilisation des références ?
QG- Bavard
- Messages : 11
Date d'inscription : 19/10/2010
Re: Passage par valeur/adresse
Oui, tout à fait.
En C++ (que je connais mal), on code
et on appelle
Alors qu'en C, on ferait :
et on appelle
En C++ (que je connais mal), on code
- Code:
f(int &a)
{
a = 0;
}
et on appelle
- Code:
int x;
f(x);
Alors qu'en C, on ferait :
- Code:
f(int*pa)
{
*pa = 0;
}
et on appelle
- Code:
int x;
f(&x);
Re: Passage par valeur/adresse
Merci, j'ai compris.
QG- Bavard
- Messages : 11
Date d'inscription : 19/10/2010
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|