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; }
Ce code se compile et s'exécute sans erreur, et il s'affiche :
0xfefef2 6 0x7ffe82600698
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!