|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : septembre 2007 Messages : 160 ![]() |
Bonjour,
J'étudie en ce moment les cours de C++ (après avoir lu les cours de C) http://cpp.developpez.com/cours/polyCpp/ et il y a d'écrit dans la partie "Références ou pointeurs ?" Code :
Alors soit réference et affectation d'adresse ce n'est pas la meme chose soit les deux déclarations sont équivalentes à peu de chose près ou soit j'ai vraiment pigé que dalle. dans l'attente de vos réponses, je vous remercie d'avance |
||
|
|
00
|
|
|
#2 | ||||
![]() ![]() |
Salut,
En fait, tout dépend de ce qui se trouve avant l'esperluette.
[EDIT]J'ai oublié le cas de l'appel d'une fonction :
une lvalue se trouve d'office à gauche de l'opérateur d'affectation "=" (s'il y en a un)et représente généralement une variable que l'on déclare, par exemple: Code :
Code :
__________________
en bas de page
|
||||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : septembre 2007 Messages : 160 ![]() |
Ca m'eclairci les idées, mais pas entierement
Voila ma double question : -Qu'est ce qu'une référence? -Qu'est ce qu'une adresse? pour moi, la double réponse serais "les 2 sont identiques, ce sont les emplacements du stockage d'une donnée" je sens que vous allez me rire au nez...mais je ne suis qu'un jeune padawan |
|
|
00
|
|
|
#4 |
![]() ![]() |
En fait, il y a une différence très nette entre une adresse, un pointeur et une référence...
Une adresse, c'est l'adresse mémoire que tout objet que tu vas créer va utiliser pour sa propre représentation. Tu n'est pas sans savoir que les différentes informations qu'utilise ton ordinateur et tes applications sont stockées en mémoire. Pour que le processeur puisse accéder à ces informations, il a besoin d'en connaitre l'adresse, tout comme le facteur a besoin de connaitre ton adresse pour te faire parvenir ton courrier. A un instant T, il ne peut jamais y avoir qu'un et un seul objet à une adresse donnée, mais il est possible qu'un objet prenne plusieurs adresses, simplement parce qu'il est trop gros pour tenir intégralement sur une seule adresse (c'est comme si tu avais vingt enfants et que tu avais acheté tout un paté de maisons pour n'en faire qu'une seule grande maison... tout le courrier arrive à la meme adresse, sauf que cette adresse va "englober" plusieurs adresses "physiques"). Un pointeur, c'est une variable "comme une autre", à ceci pres qu'elle contient... l'adresse mémoire à laquelle on va trouver un objet du type indiqué. L'utilisation de pointeurs pose énormément de problèmes, car :
Mais bon, les pointeurs souffrent de maux qui leurs sont propres C'est pourquoi C++ (et les autres langages par la suite) ont introduit la notion de référence. La référence n'est qu'un alias de variable, un pseudonyme que l'on donne à une variable lorsqu'on la transmet à une fonction, par exemple. Au cas où tu ne l'aurais pas remarqué, il y a quelqu'un derrière le clavier qui écrit koala01... Ce quelqu'un, c'est moi Mais tout ce qu'écrit koala01, c'est moi qui l'écrit, tout ce qu'il peut arriver à koala01, c'est à moi que cela arrive. Et il ne pourrait pas y avoir de koala01 si je n'existais pas réellement. Le principe d'une référence est strictement pareil :
Tu as donc parfaitement le choix d'utiliser soit une référence soit un pointeur lorsqu'il s'agit de transmettre des arguments dont tu veux éviter la copie à une fonction, mais... comme la référence est plus sécurisante et plus simple à l'emploi (elle offre une garantie d'existence de l'objet référencé, elle autorise la même syntaxe que si on travaillait avec l'objet lui-même, elle n'est pas synonyme de gestion dynamique de la mémoire, et bien d'autres choses que tu apprendras en leur temps), il est très largement recommander d'utiliser les références "chaque fois que possible", et de n'utiliser les pointeurs que "lorsque tu n'as pas le choix", et les circonstances dans lesquelles l'utilisation d'un pointeur se justifient sont très limitées
__________________
en bas de page
|
|
|
10
|
|
|
#5 |
|
Membre du Club
![]() Inscription : septembre 2007 Messages : 160 ![]() |
Ca y est j'ai compris ^^
Je te remercie pour ta longue explication. Je vais transmettre ton post à mes anciens camarades de classe qui m'ont posé la meme question. donc adresse c'est l'emplacement de stockage de ma variable dans la mémoire, réference c'est un code qui suit à la trace la variable qu'il réfère et vice/versa bonnes fêtes^^
|
|
|
00
|
|
|
#6 |
![]() ![]() Cyrille Network programmer Inscription : juin 2010 Messages : 1 570 ![]() |
Bonjour,
Il faut voir une référence comme un allias sur une variable existante. Une référence ne peut pas être nulle et doit être initialisée à la déclaration. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com