Maison  >  Article  >  développement back-end  >  Pointeurs ou références : quand utiliser chacun dans les paramètres de fonction ?

Pointeurs ou références : quand utiliser chacun dans les paramètres de fonction ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 20:34:03352parcourir

Pointers vs. References: When to Use Each in Function Parameters?

Pointeurs et références dans le passage de paramètres

En ce qui concerne les pointeurs et les références en tant que paramètres de fonction, les extraits de code fournis présentent des similitudes fonctionnelles :

int foo(bar* p) {
  return p->someInt();
}

et

int foo(bar& r) {
  return r.someInt();
}

Cependant, il existe des différences subtiles entre les deux :

  • Pointeurs nuls : Le paramètre pointeur permet en passant nullptr, alors que le paramètre de référence ne peut pas être attribué à nullptr.
  • Optimisations : Dans certains cas, le compilateur peut optimiser les paramètres de référence par rapport aux pointeurs, réduisant ainsi la surcharge.

En C , les références ne sont intentionnellement pas implémentées explicitement avec des pointeurs. Au lieu de cela, ils servent de « synonymes » pour la variable référencée. Ce concept permet des optimisations du compilateur là où les pointeurs seraient inutiles.

D'autres différences notables entre les pointeurs et les références incluent :

  • Impossible de réaffecter : Les références ne peuvent pas être réaffectées, tandis que les pointeurs peuvent.
  • Adresse : Prendre l'adresse d'un pointeur renvoie l'adresse du pointeur lui-même, tandis que prendre l'adresse d'une référence renvoie l'adresse de l'objet référencé.

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