Difference entre pointeur et reference par un exemple...

Soyez le premier à donner votre avis sur cette source.

Vue 20 323 fois - Téléchargée 233 fois

Description

Voila un petit exemple montrant l'utilisation des references et des pointeurs. On remarque que les references sont plus simples d'utilisation. C'est pourquoi il est conseillé d'utiliser les pointeurs que lorsqu'ils sont vraiment nécessaires.
Si vous avez des remarques, n'hésitez pas à me les soumettre.
Haldwin.
Nb: Evitez les commentaires peu constructifs(ex: c'est nul parske c tout...).

Source / Exemple :


#include <iostream.h>

// Structure de test
struct essai
{	
	int n;
	float x;
};

// Prototype des fonctions utilisées
void AfficheStruct(essai Essai);
void InitParAdresse(essai *pE);
void InitParReference(essai &pE);

void main(void)
{
	essai ex;
	ex.n = 10;
	ex.x = 224.75;
	AfficheStruct(ex);
	cout<<endl;

// Initialisation à zero des variables de la structure par pointeur
	InitParAdresse(&ex);
	AfficheStruct(ex);
	cout<<"   --> Initialisation faite par adresse."<<endl;
	cout<<endl;
	
	ex.n = 10;
	ex.x = 224.75;
	AfficheStruct(ex);
	cout<<endl;

// Initialisation à zero des variables de la structure par reference
// On voit ici que l'écriture du param de "InitParReference" n'est plus 
// l'adresse (comme en pointeur) la structure elle-meme. L'ecriture est donc
// plus compréhensive et source de moins d'erreur. Le passage par reference 
// permet co les pointeurs de changer les valeurs de la struct.
	InitParReference(ex);
	AfficheStruct(ex);
	cout<<"   --> Initialisation faite par reference."<<endl;
	cout<<endl;

	
	char c;
	cout<<"Appuyez sur une touche puis sur la touche 'entree' pour quitter."<<endl;
	cin>>c;

}

// Affiche les valeurs des variables de la structure
void AfficheStruct(essai Essai)
{
	cout<<">--Structure de type essai--<"<<endl;
	cout<<"Valeur de n: "<<Essai.n<<endl;
	cout<<"Valeur de x: "<<Essai.x<<endl;
}

// Initialisation des valeurs des variables de la structure par pointeur
void InitParAdresse(essai *pE)
{
	pE->n = 0;
	pE->x = 0.0;
}

// Initialisation des valeurs des variables de la structure par reference
void InitParReference(essai &pE)
{
	pE.n = 0;
	pE.x = 0.0;
}

Conclusion :


Explications brèves de la difference entre pointeur et reference:

Def pointeur: Un pointeur est une variable qui contient une adresse mémoire et non une valeur. Cette adresse mémoire est en général l'adresse d'une autre variable: le pointeur pointe sur la variable.

Def reference: Une reference est un 'alias' pour une autre variable. La reference doit etre initialisée vers une certaine variable mais ne pourra par la suite plus se référer à une autre variable.

La différence est qu'un pointeur peut etre deplacé, cad qu'on peut lui changé l'adresse vers laquelle il pointe. Alors que la reference ne peut pas se référer à une autre variable si elle est deja référencée sur une certaine variable.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_vieuxLion
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
7
c'est bien mais ne permet pas de comprendre la VRAIE différence entre pointeur et référence : la référence une fois initialisée est FIXE
alors que le pointeur peut se déplacer vers d'autres objets...

cf :
http://www.cppfrance.com/article.aspx?Val=1058
davwart
Messages postés
855
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
28 juillet 2009
1
Ton exemple explique parfaitement l'UTILISATION d'un pointerur et d'un objet référencé.
Cependant, tu n'expliques pas la différence. Pourquoi utiliser un pointeur? quels sont les différences de propriétés entre un pointeur et une référence?
Haldwin
Messages postés
77
Date d'inscription
lundi 15 avril 2002
Statut
Membre
Dernière intervention
16 juin 2004

Merci pour vos commentaires. (Enfin des commentaires constructifs!)
C'est vrai que je n'explique nul part la difference entre pointeurs et references! Mais en fait je ne voulais pas faire un tutoriel mais simplement un exemple permettant de voir comment mettre en application rapidement la notion de reference ou de pointeur. J'ai mis ma source dans "tutoriaux" mais en fait je ne savais pas ou la mettre... car elle est seulement un exemple et non un tutoriel.
Haldwin.
petite_etud
Messages postés
16
Date d'inscription
mercredi 14 février 2007
Statut
Membre
Dernière intervention
4 juin 2009

merci..assez simple ..tu m'a fai compris ce que mon professeur n'a pa pu faire!..

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.