Puntero de función en C

«Cada vez que declaramos una variable en el programa, se asigna algo de memoria y podemos acceder a los valores almacenados en esa variable apuntando a la dirección de la ubicación de memoria de la variable. Del mismo modo, cada vez que creamos una función en el programa, también se asigna un tamaño de memoria para esa función, y si en algún punto del programa queremos acceder a esa función, podemos señalar la dirección de memoria de esa función. Esto se hace a través de los punteros de función; Los punteros de función en el lenguaje de programación C simplemente llaman a la función a la que están destinados como puntero, al igual que un tipo de función normal. La declaración del puntero de función se representa con el símbolo «*» y tiene los mismos parámetros de la función, exactamente como la misma función a la que apunta».

Contenidos

procedimiento

El artículo cubre la sintaxis de los punteros de función. Nos permitirá saber cómo hacer que el puntero apunte a una función; en otras palabras, cómo podemos almacenar la dirección de la función usando el puntero. Además, con la ayuda de este artículo, aprenderemos sobre la declaración y la referencia del puntero de función y cómo se pueden usar los punteros de función para realizar llamadas de función a la función de puntero.

sintaxis

La sintaxis general para la declaración del puntero de función es la siguiente: $ tipo de retorno de función (* nombre del puntero) (tipo de datos ar_1, tipo de datos arg_2) El método de declaración del puntero de función es el mismo que la declaración de función habitual; La única diferencia en el puntero de función es que usamos el símbolo «*» cuando declaramos el nombre del puntero de función, a diferencia de la función normal donde el nombre se declara sin usar un símbolo. Usando un ejemplo hipotético, declaremos un puntero de función ficticio; Primero declare cualquier función utilizando el método habitual, p. Por ejemplo, «int func (int, int)». Después de declarar la función «func», ahora declaramos un puntero de función como «int *func_pointer (int, int)». El «*func_pointer» con tipo de retorno como entero es ahora el puntero de función para la función «func» y tiene la información sobre la dirección de memoria de la función «func».

Ejemplo #01

Habiendo discutido la declaración del puntero de función arriba, ahora estamos familiarizados con la declaración del puntero de función. Así que vamos a usar este método de declaración para crear un puntero de función, y luego usaremos ese puntero de función para hacer las llamadas de función que devuelven la función que ya habríamos declarado. Para la implementación práctica de este escenario, utilizaremos Visual Compiler Studio for C. Creamos un proyecto y lo agregamos a la ruta de los directorios «C» guardando el proyecto con «.c» como extensión. Después de crear el proyecto, también permitimos que el programa use las funciones del archivo de encabezado «stdio.h». Ahora declaramos una función normal llamada «Cuadrado» y devolvemos el tipo Entero con los dos parámetros de la función, ambos del tipo de datos Entero. Luego declaramos la función principal con un retorno de tipo Integer, y en la función principal inicializamos las dos variables como «l» y «w». Con la inicialización de estas dos variables, estamos declarando el puntero de función para la función «cuadrado» ya declarada, y lo hacemos configurando el tipo de retorno del puntero de función para que sea entero y su nombre como «*sp» con parámetros de función enteros como «int *sp (int, int)». A este puntero de función sp le asignamos la función cuadrada y leemos el valor de las variables l y w ya inicializadas llamando a scanf() pasando la dirección de l y w a los argumentos del método scanf() como » &l» o » &w». Ahora llamamos a la función usando la función de puntero y multiplicamos el valor de la función de puntero por los valores ya leídos de l y w y luego generamos este valor usando la función printf() y finalizamos la función principal devolviendo cero. Definimos la función cuadrática tomando l y w como parámetros de la función. En el cuerpo de la función, simplemente multiplicaremos las dos variables l y w para calcular el «área» del cuadrado y saldremos de la función, que devolverá esa área. La implementación de los ejemplos se muestra en la siguiente figura. #incluirint cuadrado(int, int); int main() { int l,w, área; int(*sp)(int, int); printf(«Ingrese el largo y el ancho de un rectangulo\n»); scanf(«%d%d», &l, &w); sp=cuadrado; Área = (*sp)(l,w); printf(«Area del rectangulo = %d», area); return 0;} int cuadrado(int l, int w) { int area1= l * w; área de retorno1;}

Dimos la misma entrada de usuario para ambas variables l y w como «5», ya que ambas representan la longitud y el ancho del cuadrado, que tienen el mismo valor. La salida devolvió el cuadrado con el valor 5 como el área del cuadrado.

Ejemplo #02

Con la ayuda de este ejemplo, tratamos de declarar los punteros de función para las matrices. Creamos una matriz de punteros de función, con cada elemento de la matriz almacenando la función de puntero para diferentes funciones. Por ejemplo, declararemos las dos funciones normales resta y suma con retorno de tipo entero con dos parámetros de función de tipo de datos entero. Luego declaramos un puntero de función de matriz y luego inicializamos las dos variables con el tipo de datos int y leemos sus valores con el método scanf(). Luego usamos la matriz de la función de puntero con el índice del puntero de la función de matriz, p. por ejemplo, «arr[i]“. Para cada índice de esta matriz de punteros de función, llamamos funciones de suma y resta. Esta suma y resta utiliza los valores leídos de las variables inicializadas «a» y «b». Luego mostraremos estos resultados llamando al método printf(). Debe quedar claro que teníamos que definir la función de suma y resta, donde sumamos y restamos las variables «a» y «b» en el cuerpo de estas funciones y devolvemos los resultados a estas funciones. La siguiente figura muestra el programa completo para este ejemplo: #includeint suma(int, int);int resta (int, int);int main() { int a, b; Flotador (*Función [2]) (int, int); función[0] = adición; función [1] = resta; printf(«Ingrese dos valores»); scanf («%d %d», &a, &b); resultado flotante = (*función [0]) (lejos); printf(«Suma (a+b) = %.1f\n», resultado); resultado = (*función [1]) (lejos); printf(«Resta (ab) = %.1f\n», resultado); return 0;}int suma (int a, int b) { return a + b;}int resta (int a, int b) { return a – b;}

Conclusión

El manual contiene toda la información necesaria sobre punteros de función en lenguaje C. Tanto la sintaxis de la declaración como los ejemplos se muestran en esta guía para la implementación de punteros de función. Esperamos que esta guía lo ayude a comprender mejor el concepto de punteros de función.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.