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