Maison > développement back-end > C++ > Que se passe-t-il lorsque vous déréférencez un pointeur de fonction en C ?

Que se passe-t-il lorsque vous déréférencez un pointeur de fonction en C ?

Mary-Kate Olsen
Libérer: 2024-12-19 12:13:20
original
123 Les gens l'ont consulté

What Happens When You Dereference a Function Pointer in C?

Déréférencement d'un pointeur de fonction : percer le mystère

Contrairement à l'hypothèse selon laquelle le déréférencement d'un pointeur de fonction n'accomplit rien, il initie un comportement unique en C Les pointeurs de fonction ne sont pas déréférencés dans le sens conventionnel d'accès à la mémoire de données en tant que code. mémoire.

Au lieu de cela, le déréférencement d'un pointeur de fonction dans un contexte rvalue (comme dans l'exemple de code fourni) déclenche sa conversion immédiate en un pointeur vers la fonction d'origine. Étonnamment, le déréférencement ultérieur de ce pointeur récupère la même valeur de fonction, qui est ensuite rapidement reconvertie en pointeur. Ce cycle peut être répété indéfiniment.

Ce comportement devient particulièrement évident lors de l'examen des pointeurs de fonction dans un contexte lvalue (par exemple, le côté gauche d'une affectation). Contrairement aux tableaux, qui sont convertis en pointeurs d’éléments, les valeurs de fonction sont converties en pointeurs vers leur propre type. Ainsi, le déréférencement d'un pointeur de fonction dans un contexte lvalue attribue une nouvelle fonction au pointeur.

La justification derrière la conversion implicite des valeurs de fonction en pointeurs est purement pratique. Pour les programmeurs utilisant des pointeurs de fonction, cela élimine la nécessité d'écrire de manière approfondie des &. À l'inverse, les pointeurs de fonction en position d'appel reviennent automatiquement aux valeurs de fonction, évitant ainsi l'utilisation de * pour les invoquer.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal