Maison >développement back-end >C++ >Comment les pointeurs sont-ils transmis en C : par valeur ou par référence ?

Comment les pointeurs sont-ils transmis en C : par valeur ou par référence ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 21:26:12891parcourir

How are Pointers Passed in C  : By Value or By Reference?

Passage de pointeur en C : Passage par valeur ou Passage par référence ?

Question :

En C, lors du passage arguments du pointeur, se comporte-t-il comme un passage par valeur ou un passage par référence?

Réponse :

Les pointeurs sont passés par valeur en C , ce qui signifie que l'adresse de l'objet pointé est copiée dans le paramètre de fonction. Cela implique deux scénarios :

  • Les modifications apportées à la variable du pointeur (l'adresse) dans la fonction ne seront pas reflétées dans le pointeur externe.
  • Cependant, les modifications apportées via le déréférencement du pointeur (modification l'objet pointé) sera reflété à l'extérieur de la fonction.

Pointeur vers pointeur Passage :

Si l'objectif est de modifier la valeur du pointeur lui-même (le pointer vers un objet différent), un pointeur vers un pointeur est requis. Ceci est réalisé en utilisant une double esperluette (&&) avant le nom du pointeur lors de sa transmission à la fonction. Cette méthode est une pratique courante en C.

Références vs pointeurs :

En C , les références sont préférées aux pointeurs pour plusieurs raisons :

Avantages des références :

  • Bruit syntaxique réduit en fonction bodys
  • Plus d'informations fournies au compilateur, permettant des optimisations

Inconvénients des références :

  • Briser le pass-by -règle de valeur de C, nécessitant plus d'attention au comportement des paramètres
  • Non pris en charge dans C

Cas spécifique : Pointeur vers pointeur vs référence

Dans le cas du passage de pointeur à pointeur, la principale différence avec l'utilisation d'une référence est la simplicité. En passant une référence au pointeur externe, les deux niveaux d'indirection peuvent être éliminés, offrant ainsi une approche plus simple.

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