Maison > développement back-end > C++ > Les références peuvent-elles être réaffectées en C ?

Les références peuvent-elles être réaffectées en C ?

Patricia Arquette
Libérer: 2024-12-05 20:03:11
original
925 Les gens l'ont consulté

Can References Be Reassigned in C  ?

Comprendre la réaffectation des références en C

En C, il est communément indiqué que les références nécessitent une initialisation lors de la déclaration et ne peuvent pas être réaffectées. Cependant, une expérience récente a soulevé des doutes sur cette notion. Examinons le comportement de la réaffectation de référence dans le programme suivant :

#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;

int main()
{
    int i = 5, j = 9;

    int &ri = i;
    cout << "ri is : " << ri << "\n";

    i = 10;
    cout << "ri is : " << ri << "\n";

    ri = j; // *** Reassignment at Issue ***
    cout << "ri is : " << ri << "\n";

    getch();
    return 0;
}
Copier après la connexion

Le programme attribue la référence ri à la variable entière i, faisant de ri un alias pour i. Initialement, ri pointe vers la valeur 5. Lorsque i est modifié à 10, ri reflète correctement ce changement. Cependant, le point critique est la déclaration suivante : ri = j.

N'est-ce pas une réaffectation de la référence ?

La réponse, étonnamment, est non. ri est toujours une référence à i. Pour le démontrer, vous pouvez comparer les adresses de ri et i : elles sont identiques. Ce que vous observez n'est pas une réaffectation de la référence mais plutôt une modification de la valeur stockée à l'emplacement mémoire pointé par ri.

En termes plus simples, ri = j est équivalent à *(&ri) = j , où &ri récupère l'adresse mémoire de ri et * la déréférence pour accéder à la valeur.

A titre de comparaison, si vous créez un const int &cri = i, cela empêchera toute réaffectation à cri, renforçant sa nature constante.

En résumé, bien que les références ne puissent pas être réaffectées à de nouvelles variables en C , elles peuvent être utilisées pour modifier la valeur de l'objet qu'elles référencent, comme on le voit dans notre programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal