Maison >développement back-end >C++ >L'argument du pointeur C transmet-il réellement une valeur transmise ?

L'argument du pointeur C transmet-il réellement une valeur transmise ?

DDD
DDDoriginal
2024-12-15 02:37:09186parcourir

Is C   Pointer Argument Passing Truly Pass-by-Value?

La transmission d'un argument de pointeur est-elle transmise par valeur en C ?

En C, passer un argument de pointeur est en effet une transmission par valeur. Cela signifie qu'une copie du contenu de la variable pointeur (l'adresse de l'objet pointé) est transmise à la fonction.

Toute modification apportée à la valeur du pointeur dans le corps de la fonction n'affectera pas le pointeur d'origine à l'extérieur. la fonction. Cependant, les modifications apportées à la valeur de l'objet pointé sont reflétées.

Utilisation du pointeur vers le pointeur comme argument de fonction

Pour modifier la valeur du pointeur elle-même dans une fonction, un pointeur vers un pointeur doit être utilisé comme argument. Cette technique est acceptable et constitue la procédure standard pour de tels scénarios. En utilisant l'opérateur & avant l'argument du pointeur, l'adresse du pointeur est transmise.

Références vs pointeurs

Bien que l'utilisation de pointeurs pour obtenir ce comportement soit une pratique courante , en C , l'utilisation de références est généralement préférée aux pointeurs pour plusieurs raisons :

  • Complexité syntaxique réduite en fonction bodys
  • Fourniture de plus d'informations au compilateur

Inconvénients des références

  • Briser la règle du passage par valeur, nécessitant une attention particulière au comportement des paramètres
  • Non pris en charge par C

Dans le cas spécifique du pointeur vers des pointeurs, l'utilisation de références simplifie la mise en œuvre. Il peut même être possible d'éliminer complètement les niveaux de pointeur, en passant une seule référence à la place.

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