Difference entre pointeur et reference par un exemple...

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

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.