"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué se pueden utilizar los nombres de funciones como punteros de funciones en C90?

¿Por qué se pueden utilizar los nombres de funciones como punteros de funciones en C90?

Publicado el 2024-12-23
Navegar:466

Why Can Function Names Be Used as Function Pointers in C90?

Uso de nombres de funciones como punteros de funciones

El documento de fundamentos de C90 proporciona información sobre la elección de diseño de equiparar nombres de funciones con punteros de funciones. Esta conveniencia simplifica el uso de punteros de función en contextos específicos.

Declaraciones de funciones

Considere las declaraciones:

int f();
int (*pf)();

Llamadas a funciones

Todas las siguientes expresan llamadas a funciones válidas:

(&f)();
f();
(*f)();
(**f)();
(***f)();

pf();
(*pf)();
(**pf)();
(***pf)();

La primera expresión de cada línea se cubrió anteriormente. El segundo es convencional. Las expresiones posteriores implican una conversión implícita del designador de función a un valor de puntero en la mayoría de los contextos.

Justificación del diseño

El comité no vio inconvenientes significativos al permitir estas formas y consideró prohibirlos como esfuerzo excesivo. Por lo tanto, la equivalencia entre designadores de funciones y punteros de funciones ofrece conveniencia en el uso de punteros.

Conversión implícita

Otra observación interesante es la conversión implícita de tipos de funciones en punteros cuando se usan como parámetros pero no como tipos de retorno:

typedef bool FunctionType(int);
void g(FunctionType); // Implicitly converts to void g(FunctionType *)
FunctionType h(); // Error
FunctionType *j(); // Returns a function pointer with the type bool(int)
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3