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

Différence clé - Pointeur vs référence
 

Avant de discuter de la différence entre pointeur et référence, examinons d'abord brièvement la signification de ces deux termes. Dans un programme, les données occupent de la mémoire. L'emplacement exact de la mémoire dans laquelle les données ont été placées à une heure d'exécution doit être connu pour pouvoir y accéder.. Variables pointeur et variables de référence sont utilisés pour accéder à ces données et manipuler les adresses de mémoire où ils se trouvent. Autrement dit, les pointeurs et les références peuvent être utilisés pour faire référence à des objets indirectement. Ils conservent essentiellement les adresses de mémoire comme valeurs. le différence clé entre un pointeur et une référence est que un pointeur est une variable qui stocke l'adresse de l'emplacement mémoire d'une autre variable alors qu'un la référence est une variable qui fait référence à une autre variable. Les deux mécanismes, la aiguille et référence, ont une syntaxe et un usage différents.

Qu'est-ce qu'un pointeur??

Un pointeur est un objet de langage de programmation qui stocke l'adresse mémoire d'une valeur dans la mémoire informatique.

En syntaxe C ++;

int i = 5;

int * ptr = & i;

La première ligne définit une variable initialisée avec une valeur de 5. La seconde ligne définit un pointeur sur l'adresse mémoire de la variable. Ici, le "ptr" est déclaré en tant qu'objet de type "pointeur sur int" dont la valeur initiale est l'adresse de l'objet i. Essentiellement ptr variable pointe sur i en stockant son adresse mémoire.

L'obtention de la valeur stockée dans un emplacement de mémoire est appelée déréférencement. L'opérateur * est utilisé pour déréférencer le pointeur. Une fois les déclarations terminées, l’expression indirecte * ptr déréférence ptr pour désigner i.

Pour changer la valeur de i, l’affectation suivante peut être utilisée;

* ptr = 20;

Les pointeurs peuvent également être réaffectés pour faire référence à différents objets.

UNE pointeur nul est un type spécial de pointeur. Un pointeur nul est souvent désigné par 0 ou nul et ne pointe vers rien. Il est recommandé d’utiliser un pointeur nul dans le cas où il n’a pas d’adresse exacte à attribuer au pointeur. Cette affectation peut être utilisée dans des opérations et conditions logiques.

Les pointeurs peuvent être utilisé pour stocker et gérer les adresses de mémoire allouée dynamiquement. La mise en œuvre et le contrôle des structures de données telles que les piles, les files d'attente et les listes peuvent être rendus efficaces grâce à l'utilisation de pointeurs. Par exemple, une file d'attente peut avoir deux pointeurs; pointeur de tête et pointeur de queue. Les pointeurs peuvent également être utilisés pour transmettre des variables par leur adresse, ce qui permettrait de modifier la valeur. La manipulation directe de mémoire ou de périphériques mappés en mémoire peut également être traitée à l'aide de pointeurs.

Les pointeurs permettent un accès protégé et non protégé à la mémoire adressée. Par conséquent, les précautions nécessaires doivent être prises pour vérifier que le contenu d'un pointeur est valide. Sinon, le déréférencement d'un pointeur avec une adresse mémoire non valide peut provoquer le blocage du programme.

Les pointeurs sont pris en charge dans des langages tels que C, C ++, Pascal et de nombreux langages d'assemblage..

Aiguille une pointant vers l'adresse mémoire associée à la variable b.

Qu'est-ce qu'une référence??

Une référence est simplement un Identifiant alternatif pour une valeur stockée dans la mémoire. Il permet à un programme d'accéder indirectement à une donnée particulière.

En syntaxe C ++;

int i = 5;

int & ref = je;

La première ligne définit une variable initialisée avec une valeur de 5. La seconde ligne déclare 'ref' comme un objet de type 'reference to int' qui se réfère à i. Une référence est différente des données elles-mêmes étant donné qu'une référence est implémentée en tant qu'adresse physique de la donnée particulière qui est stockée en mémoire..

Une fois définie, une référence ne peut pas être réaffectée à une nouvelle valeur. Une référence fait toujours référence à l'objet avec lequel elle est initialisée. Dans l'affectation suivante, ref fait toujours référence à i, mais sa valeur est maintenant 20.

ref = 20;

Selon l'exemple ci-dessus, le déréférencement des références ne nécessite aucun opérateur.

Les références peuvent être utilisées lorsqu'une variable fait toujours référence à un objet. En effet, contrairement aux pointeurs, les références ne peuvent pas être nulles et doivent toujours être attribuées à l’initialisation. Etant donné que les références doivent toujours faire référence à un objet, le fait de faire de cette variable une référence garantit le fonctionnement efficace et correct du programme. Etant donné qu'il n'y a pas de références nulles, il n'est pas nécessaire de tester la validité d'une variable de référence.

Les variables de référence peuvent être utilisé pour transmettre efficacement des données volumineuses comme arguments de procédures. Les références sont également utilisées pour le partage de données volumineuses entre différentes zones de code, chaque code conservant une référence aux données..

Les langages de programmation tels que C ++, Java, Python, Perl, PHP, Ruby, etc. prennent en charge les références..

Quelle est la difference entre Pointer et Reference?

Définition de pointeur et référence

Aiguille: Un pointeur est l'adresse mémoire d'un objet stocké dans la mémoire de calcul.

Référence: Une référence est un identifiant alternatif ou un alias pour un objet.

Caractéristiques du pointeur et de la référence

Déclaration

Aiguille: Un pointeur est déclaré avec l'opérateur *.

Référence: Une référence est déclarée avec l'opérateur &.

Déréférencement

Aiguille: Une variable de pointeur nécessite le déréférencement de l'opérateur *.

Référence: Une variable de référence ne nécessite aucun opérateur pour être déréférencé.

Initialisation

Aiguille:  Les pointeurs peuvent être initialisés à null. Ces variables s'appellent des pointeurs nuls.

Référence: Les références ne peuvent pas être initialisées à null. Il n’existe pas de référence nulle. Une référence doit toujours faire référence à un objet.

Réaffectations

Aiguille: Une variable de pointeur peut être réaffectée pour faire référence à différents objets.

Référence: Une variable de référence ne peut pas être réaffectée. Il fait toujours référence à l'objet avec lequel il a été initialisé.

Usage

Aiguille: Les variables de pointeur doivent être utilisées lorsque la possibilité de faire référence à rien n'existe ou lorsqu'il est nécessaire de faire référence à différentes choses à des moments différents.

Référence: Les variables de référence doivent être utilisées quand il y aura toujours un objet à référencer et lorsqu'il n'est pas nécessaire d'utiliser cette variable de référence pour faire référence à autre chose que cet objet.

Application d'utilisation

Aiguille: Les variables de pointeur peuvent être utilisées pour implémenter des algorithmes et des structures de données.

Référence: Les variables de référence peuvent être utilisées dans les paramètres de fonction et les types de retour définissent des interfaces utiles.

Langues utilisées:

Aiguille: Les langages de programmation tels que C, C ++, Pascal et de nombreux langages d'assemblage prennent en charge les pointeurs.

Référence: Les langages de programmation tels que C ++, Java, Python, Perl, PHP, Ruby, etc. prennent en charge les références..

Courtoisie d'image: “Pointeurs” par Ce fichier a été créé par l'utilisateur: SvenTranslation.Own work.Cette image vectorielle a été créée avec Inkscape.(CC BY-SA 3.0) via Chambre des communes -