


Pourquoi les noms de fonctions sont-ils équivalents aux pointeurs de fonction avec l'adresse de l'opérateur en C ?
Pourquoi le nom de fonction est-il équivalent au pointeur de fonction avec l'adresse de l'opérateur ?
En programmation C, utiliser un nom de fonction comme pointeur de fonction équivaut à appliquer l’opérateur d’adresse de (&) au nom de la fonction. Cette apparente incohérence avec d'autres éléments du langage, tels que les tableaux, a une justification spécifique.
Raison d'être de l'équivalence du nom de fonction
Selon le document ANSI C90 Justification, l'équivalence entre les désignateurs de fonction (noms de fonction) et les pointeurs de fonction a été introduit pour améliorer la commodité. En autorisant les deux notations, le langage fournit un moyen abrégé d'appeler des fonctions membres dans des structures packagées. Par exemple :
graphics.open(file) // Equivalent to (*graphics.open)(file)
Curiosités des désignateurs de fonctions
Cette équivalence conduit à des formes syntaxiques particulières mais valides :
( &f)(); f(); (*f)(); (**f)(); (***f)(); pf(); (*pf)(); (**pf)(); (***pf)();
Le Comité a raisonné qu'interdire des formulaires comme (f)() tout en autorisant a (pour int a[]) aurait été inutile et peu pratique.
Exceptions dans les types de paramètres et de retour
Fait intéressant, un type de fonction peut être implicitement converti en un pointeur vers lui-même en tant que paramètre (par exemple, void g(FunctionType)). Cependant, il ne peut pas être converti en pointeur lorsqu'il est utilisé comme type de retour (par exemple, FunctionType h();). Cette distinction garantit que les problèmes de compatibilité des types de fonctions sont évités.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Gulc: Cibliothèque C construite à partir de zéro

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Utilisation distincte et partage de phrases

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?

Comment fonctionne la bibliothèque de modèle standard C (STL)?
