Différence entre la référence C ++ et le pointeur

Bien que la référence C ++ au pointeur semble être similaire, il existe une différence significative entre la référence C ++ et le pointeur. Une variable de référence peut être dite comme un autre nom pour une variable existante. Une fois cette variable initialisée, le nom de la variable peut être utilisé pour faire référence à une autre variable. Les pointeurs, d'autre part, sont des variables qui stockent l'adresse d'une variable. Comme toute variable, celles-ci sont déclarées en premier, puis l'adresse de toute variable peut y être stockée. Examinons en détail les différences entre la référence C ++ et le pointeur comme ci-dessous.

Comparaison directe entre la référence C ++ et le pointeur (infographie)

Vous trouverez ci-dessous la principale différence entre la référence C ++ et le pointeur

Différences clés entre la référence C ++ et le pointeur

Les deux C ++ Reference vs Pointer sont des choix populaires sur le marché; laissez-nous discuter de certaines des principales différences entre la référence C ++ et le pointeur:

La principale différence entre la référence C ++ et le pointeur est que l'on fait référence à une autre variable tandis que cette dernière stocke l'adresse d'une variable. Les références n'apportent aucune modification à une variable d'origine tandis que si le pointeur est modifié, cela affecte la variable d'origine. Une référence doit être initialisée lors de la déclaration alors qu'il n'est pas nécessaire d'initialiser un pointeur une fois qu'il est déclaré. Un tableau de pointeurs peut être créé alors qu'un tableau de références ne peut pas être créé. Une valeur nulle ne peut pas être affectée à une référence mais elle peut être affectée à un pointeur.

Tableau de comparaison C ++ Reference vs Pointer

La comparaison principale entre la référence C ++ et le pointeur est discutée ci-dessous:

La base de comparaison entre la référence C ++ et le pointeurRéférence C ++Aiguille
VariablesUne référence peut être dite comme un alias d'une variable existante. L'utilisation principale de cette variable fonctionne comme un paramètre qui fonctionne comme un passage par référence. Ceci est passé à une fonction. La fonction à laquelle cela est transmis fonctionne sur la variable d'origine au lieu de la copie dans une valeur de passage. Les modifications apportées à l'intérieur de la fonction seront également reflétées à l'extérieur.Les variables de pointeur sont des variables qui stockent l'adresse. Contrairement aux variables habituelles que nous avons comme int, double et char, il stocke les adresses mémoire. Pour faciliter la programmation, le besoin de cette variable apparaît. Il s'agit d'une variable qui peut stocker une valeur d'un type particulier.
DéclarationLa déclaration d'une variable de référence C ++ se fait en ajoutant un symbole «&» avant une variable. Lorsqu'il est utilisé avec une expression, cela signifie qu'il fonctionne comme une adresse d'opérateur. Il est utilisé pour fournir un autre nom à une variable existante.
Syntaxe:
tapez & newName = existingName ;
// ou
tapez & newName = existingName ;
// ou
tapez & newName = existingName ;
Par exemple:
/ * Déclaration de référence de test et initialisation * /
#comprendre
using namespace std;
int main() (
nom de chaîne = "Priya"; // Déclarez une variable chaîne appelée nom
chaîne & refName = nom; // Déclarez une référence (alias) au nom de la variable
// refName et name font tous deux référence à la même valeur de "Priya"
cout << nom << endl; // Il imprime la valeur de la variable "Priya"
cout << refName << endl; // Il imprime la valeur de référence "Priya"
Modifiez maintenant la valeur de Nom
refName = "Karishma"; // Réaffecte une nouvelle valeur à refName
cout << refName << endl;
cout << nom << endl; // La valeur du nombre change également «Karishma»
nom = "Snehal"; // Réaffectez une nouvelle valeur au nom
cout << namer << endl;
cout << refName << endl; // La valeur de refName change également «Snehal»
)
Cela signifie que les valeurs d'une variable de référence peuvent être modifiées dans l'original et la copie de la variable.
Avant d'utiliser un pointeur n'importe où dans le programme, il doit être déclaré à l'avance. Pour déclarer un pointeur et faire savoir au système qu'il s'agit d'un pointeur, une variable est préfixée par un '*'. Un pointeur est accompagné d'un type de données qui peut être un entier ou un double, etc.
Syntaxe:
type * pntr ; // Déclarer une variable pointeur appelée pntr comme pointeur de type
// ou
type * pntr ;
// ou
type * pntr ;
Par exemple:
int * newPtr; // Déclarez une variable de pointeur appelée newPtr pointant vers un int (un pointeur int)
Ce pointeur contiendra l'adresse. Cette adresse contient une valeur int.
double * newdPtr; // Déclarer un double pointeur
Le * indique qu'un pointeur est en cours de déclaration et n'agit pas comme un opérateur.
RéaffectationUne variable de référence ne peut pas être réaffectée.
Exemple:
int x = 5;
int y = 6;
int & r = x;
Un pointeur peut être réaffecté et cette propriété est utile lorsqu'un développeur implémente des structures de données telles que des listes liées, des arbres, etc.
Exemple:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
Adresse mémoireUne variable de référence partage la même adresse que la variable d'origine. Ces références peuvent être transmises à différentes fonctions, elles peuvent être stockées dans différentes classes, etc. Une référence ne pointe jamais vers une nouvelle variable tant que l'ancienne n'est pas supprimée ou hors de portée.Un pointeur a sa propre adresse mémoire et la stocke sur la pile. Un pointeur est une variable indépendante et peut se voir attribuer de nouvelles valeurs.
Valeur nulleUne référence ne peut pas avoir de valeur nulle affectée.Un pointeur peut avoir une valeur nulle affectée directement.
ArgumentsUne variable de référence peut être référencée par contournement par valeur. Ici, les arguments sont passés par valeur aux fonctions. Un clone est créé et envoyé à la fonction l'utilisant. Les modifications apportées à la copie n'ont aucun effet sur la variable d'origine.Lorsque nous souhaitons modifier la copie d'origine, cela peut être fait en passant un pointeur de l'objet dans la fonction. C'est ce qu'on appelle passer par référence.
Quand utiliserLes références accèdent indirectement à une variable. Prenons l'exemple suivant:
enum day
(
Dimanche Lundi, …
);
Si nous définissons une variable
jour x;
Et nous voulons surcharger un opérateur dans l'instruction alors nous pouvons écrire comme ci-dessous:
jour et opérateur ++ (jour et jour)
(
d = (jour) (d + 1);
retour d;
)
En bref, cela peut être utilisé dans les paramètres de fonction et les types de référence.
L'utilisation de pointeurs est sans pré-déclaration.
jour * opérateur ++ (jour * d);
Cela peut être utilisé pour implémenter des structures de données et des opérations arithmétiques de pointeurs.

Conclusion - Référence C ++ vs pointeur

C ++ Reference vs Pointer sont difficiles à travailler, mais ils améliorent considérablement l'efficacité du programme. Ils ont tous deux C ++ Reference vs Pointer ont leurs propres utilisations et servent leurs propres objectifs. Vous pouvez utiliser des pointeurs lorsque vous souhaitez implémenter des structures de données et des algorithmes tandis que des références lorsque vous souhaitez utiliser des fonctions et des paramètres avec des types de retour.

Article recommandé

Cela a été un guide pour les principales différences entre la référence C ++ et le pointeur. Ici, nous discutons également des différences de référence C ++ par rapport au pointeur avec des infographies et un tableau de comparaison. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Différences entre Python et C ++
  2. Performances C vs C ++ - Meilleures différences
  3. MongoDB vs Cassandra
  4. Mobx vs Redux
  5. C ++ Vector vs Array: principales différences
  6. MongoDB vs DynamoDB: Fonctions
  7. MongoDB vs SQL: Quelles sont les fonctions
  8. C vs C #: Fonctions