Maison > développement back-end > C++ > Pourquoi renvoyer une référence à une variable C locale est-il généralement déconseillé ?

Pourquoi renvoyer une référence à une variable C locale est-il généralement déconseillé ?

Patricia Arquette
Libérer: 2024-12-08 18:12:12
original
894 Les gens l'ont consulté

Why is Returning a Reference to a Local C   Variable Generally Discouraged?

Renvoyer une référence à une variable locale

En C , renvoyer une référence à une variable locale est généralement déconseillé car cela peut conduire à des erreurs références. Cependant, dans certaines circonstances, cela peut toujours sembler fonctionner, comme dans l'exemple ci-dessous :

int& foo()
{
    int i = 6;
    std::cout << &i << std::endl;
    return i;
}

int main()
{
    int i = foo();
    std::cout << i << std::endl;
    std::cout << &i << std::endl;
}
Copier après la connexion

Ce code se compile et s'exécute sans erreur, et il s'affiche :

0xfefef2
6
0x7ffe82600698
Copier après la connexion

Contrairement Conformément aux attentes, la variable i dans main() contient toujours la valeur 6 après le retour de l'appel à foo(). En effet, dans ce cas, le compilateur a prolongé la durée de vie de la variable locale au-delà de la fin de la fonction foo().

Ce comportement est spécifique à l'implémentation et ne doit pas être invoqué. En général, il est considéré comme une bonne pratique d'éviter de renvoyer des références à des variables locales. Si vous devez renvoyer la valeur d'une variable locale, il est préférable de la renvoyer par valeur.

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