Maison >développement back-end >C++ >Quand passer par référence ou pointeur en C : un principe directeur ?

Quand passer par référence ou pointeur en C : un principe directeur ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-12 16:31:01778parcourir

When to Pass by Reference or Pointer in C  : A Guiding Principle?

Passage par référence ou pointeur en C : un principe directeur

En C, comprendre quand employer le passage par référence et quand utiliser des pointeurs est crucial. Cette pratique peut conduire à un code efficace et sans erreur.

Situations générales

  • Passer un std::string à une fonction :

    • foo(std::string*) ou foo(std::string&)?
  • Passer un tr1::shared_ptr à une fonction :

    • foo(tr1::shared_ptr* ptr) ou foo(tr1::shared_ptr& ptr)?

Pointeurs vs références

Le passage par référence offre une cohérence, car chaque objet peut être traité comme une référence. Cependant, le passage par pointeur offre la flexibilité nécessaire pour gérer les nullptrs et les littéraux.

Analyse d'extrait

L'extrait donné :

map<string, shared_ptr<vector<string>> > adjacencyMap;
vector<string>* myFriends = new vector<string>();
myFriends->push_back(string("a"));
myFriends->push_back(string("v"));
myFriends->push_back(string("g"));
adjacencyMap["s"] = shared_ptr<vector<string> >(myFriends);

met en évidence la nécessité de considérer les propriétés à la fois des références et des pointeurs :

  • Les clés de carte utilisent des références, garantissant l'efficacité de la mémoire.
  • Le pointeur vectoriel permet une allocation dynamique, facilitant l'ajout de vecteurs.

Règle générale

En fin de compte, le choix approprié dépend des exigences spécifiques. Comme principe directeur, considérez :

  • Utiliser des références :Pour une utilisation efficace de la mémoire et lorsque vous avez garanti l'accès à l'objet référencé.
  • Utiliser pointeurs : Lors de la gestion des nullptrs, de l'utilisation de la mémoire dynamique ou lorsque vous devez modifier les références vous-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