¿Cómo declarar un puntero a una función?

Bueno, asumimos que sabe lo que significa puntero en C. Entonces, ¿cómo creamos un puntero a un número entero en C?
Huh.. es bastante simple..

int * ptrInteger; /*We have put a * operator between int 
                    and ptrInteger to create a pointer.*/

Aquí ptrInteger es un puntero a entero. Si entiendes esto, lógicamente no deberíamos tener ningún problema en declarar un puntero a una función 🙂

Así que primero veamos… ¿cómo declaramos una función? Por ejemplo,

int foo(int);

Aquí foo es una función que devuelve int y toma un argumento de tipo int. Entonces, como pensará un tipo lógico, al colocar un operador * entre int y foo (int) debería crear un puntero a una función, es decir

int * foo(int);

Pero Vaya… La precedencia del operador C también juega un papel aquí… así que en este caso, el operador() tendrá prioridad sobre el operador *. Y la declaración anterior significará: una función foo con un argumento de tipo int y un valor de retorno de int *, es decir, un puntero entero. Así que hizo algo que no queríamos hacer. 🙁

Entonces, como siguiente paso lógico, tenemos que vincular el operador * con foo de alguna manera. Y para esto, cambiaríamos la precedencia predeterminada de los operadores C usando el operador().

int (*foo)(int);

Eso es todo. Aquí el operador * está con foo, que es un nombre de función. E hizo lo mismo que queríamos hacer.

¡Así que no fue tan difícil como pensábamos antes!

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *