Maison >développement back-end >C++ >Pointeurs dans les fonctions C : passer par valeur ou référence ?

Pointeurs dans les fonctions C : passer par valeur ou référence ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-30 21:20:11452parcourir

Pointers in C   Functions: Pass by Value or Reference?

Passer des arguments de pointeur en C : passer par valeur ou passer par référence ?

En C, c'est une idée fausse courante selon laquelle passer un pointeur L’argument équivaut à passer par valeur. Cependant, ce n'est pas le cas.

Les pointeurs sont transmis par valeur

Lorsqu'un pointeur est passé à une fonction, la valeur de la Le pointeur, c'est-à-dire l'adresse mémoire vers laquelle il pointe, est copié dans la mémoire locale de la fonction. Cela signifie que toute modification apportée au pointeur à l'intérieur de la fonction n'affectera pas la variable de pointeur d'origine.

Modification de la valeur pointée

Cependant, les modifications apportées à la valeur vers laquelle pointe le pointeur seront être reflétées dans la variable d'origine. En effet, le pointeur lui-même stocke l'adresse de l'objet d'origine, pas l'objet lui-même.

Modification de la valeur du pointeur

Si vous souhaitez modifier la valeur du pointeur dans une fonction, vous devez utiliser un pointeur vers pointeur. Lorsque vous passez un pointeur vers un pointeur, l'adresse du pointeur d'origine est copiée dans la fonction. Cela vous permet de modifier le pointeur d'origine depuis la fonction.

Pratique standard

En C, il est acceptable et considéré comme une pratique standard d'utiliser un pointeur vers un pointeur comme un argument lorsque vous devez modifier la valeur du pointeur dans une fonction. Il s'agit d'une technique courante en C et C , car les références n'ont été introduites que dans les versions ultérieures de C .

Références vs pointeurs

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

  • Moins de bruit syntaxique
  • Plus d'informations pour le compilateur
  • Dans le cas spécifique du pointeur vers pointeur, les références peuvent simplifier le code.

Cependant, les références ne sont pas prises en charge en C, et elles enfreignent la règle de passage 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!

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