Noms de fonction comme pointeurs de fonction : une justification de conception
En C, utiliser des noms de fonction comme pointeurs de fonction équivaut à appliquer l'adresse de opérateur au nom de la fonction. Ce comportement peut sembler incohérent avec d'autres parties du langage et soulève des questions sur sa justification de conception.
Le document ANSI C90 Justification fournit un aperçu de cette décision de conception :
(&f)(); // Explicit address-of operator f(); // Implicit conversion to function pointer (*f)(); // Deference of a function pointer (**f)(); // Deference twice (***f)(); // Deference three times
Concernant l'absence de conversion implicite du type fonction vers le type pointeur dans les contextes de retour, l'explication réside dans la notion de " décoration de type retour." En C, les types de retour de fonction font partie de la signature de la fonction et ne peuvent pas être modifiés. Ainsi, une fonction ne peut pas implicitement renvoyer un pointeur vers elle-même.
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!