Maison >développement back-end >C++ >Les références C peuvent-elles être réaffectées ou s'agit-il simplement d'une modification de la valeur ?

Les références C peuvent-elles être réaffectées ou s'agit-il simplement d'une modification de la valeur ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-05 01:34:11717parcourir

Can C   References Be Reassigned, or is it Just Value Modification?

Réaffectation de référence en C

Déclarer une référence en C nécessite une initialisation, ce qui donne l'impression que les références sont immuables et ne peuvent pas être réaffectées. Cependant, considérons le programme suivant :

#include <iostream>

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; // Is this not reassigning the reference?
    cout << "ri is : " << ri << '\n';
    return 0;
}

Le code se compile avec succès et produit le résultat attendu :

ri is : 5
ri is : 10
ri is : 9

Contrairement à la croyance populaire, la ligne ri = j ne réaffecte pas la référence ri. Au lieu de cela, il modifie la valeur de i via la référence ri, comme en témoigne l'impression de i avant et après la ligne. Ce comportement est étayé par le fait que &ri et &i impriment la même adresse, indiquant que ri reste une référence à i.

En revanche, déclarer une référence constante (const int &cri = i) empêche la réaffectation de la référence lui-même.

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!

Déclaration:
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