Puntos de función en C

Puntos de función en C
Los punteros son una característica clave del lenguaje de programación C que le brinda el control directo del programador de la memoria utilizada en el programa. Las funciones son una técnica y sintaxis comunes en la programación C para crear bloques de código reutilizables y llamarlos en diferentes situaciones. Este tutorial de insinte de Linux describe los punteros de la función en el lenguaje de programación C.

Un puntero de función es una variable normal de puntero C, pero lo que señala es una función. Esto permite programas elegantes y dinámicos que llamarán diferentes funciones en diferentes circunstancias dinámicamente en función de las cuales alguna vez funcione el puntero apunta en ese momento. El programador crea lógica para cambiar el valor del puntero a varias funciones por diferentes razones, y el puntero apunta a las llamadas a las que funciona alguna vez. Demostrar esto con algunos ejemplos.

Resumen técnico

Cubriremos la sintaxis de los punteros de la función. Nos hará saber cómo podemos hacer que el puntero apunte a una función; En otras palabras, cómo podemos almacenar la dirección de la función utilizando el puntero. También aprenderemos la declaración y la referencia del puntero de la función y cómo los punteros de la función se pueden usar para hacer que la función requiere la función del puntero.

Sintaxis

La sintaxis general para la declaración del puntero de la función es la siguiente:

$ Tipo de retorno de la función (* Nombre del puntero) (Tipo de datos AR_1, Tipo de datos Arg_2)

El método de declaración del puntero de la función es lo mismo que la declaración de función habitual; La única diferencia en el puntero de la función es cuando declaramos el nombre del puntero de la función, usamos el símbolo * y la variable se incluye entre paréntesis, a diferencia de la función normal donde se declara el nombre sin el uso de ningún símbolo con él. Declaremos un puntero de función ficticia con la ayuda de algún ejemplo hipotético; Primero, declare cualquier función con el método habitual, E.gramo., En t func (int, int). Después de la declaración de función concurrido, Ahora declararemos un puntero de función como int (*func) (int, int);. Aquí está la sintaxis general y la asignación de una función a un puntero de función:

// Declaración de funciones
int func (int, int);
// Declaración del puntero de funciones
int (*func) (int, int);
// Asignación de puntero de funciones
funcptr = func;

Ejemplo # 01

En este ejemplo crearemos una función llamada cuadrado con 2 parámetros para el cálculo de LEN y ancho de un rectángulo. [Len * ancho = área]. Luego declaramos un puntero de función y asignamos la dirección del cuadrado función para el puntero de función llamado sp. Después de recibir entradas dinámicas de usuario, llamamos a la función utilizando el puntero de la función para hacer la ejecución de la llamada de la función.

En el cuerpo de la función, simplemente tomaremos la multiplicación de ambas variables fila y ancho para calcular el área del rectángulo y salga de la función que devuelve esta área. La implementación de los ejemplos se muestra en el siguiente fragmento:

#incluir
Int Square (int Len, int Width)
int área = len * ancho;
área de regreso;

int main ()
int l, w, área;
int (*sp) (int, int);
printf ("Ingrese la longitud y la amplitud de un rectángulo:");
scanf ("%d%d", & l, & w);
// Asignar función al puntero de la función
sp = cuadrado;
// Puntero de la función de llamada
área = (*sp) (l, w);
printf ("área de rectángulo = %d \ n", área);
regresar 0;
linuxhint@: ~ $ ./FUNC
Ingrese la longitud y la amplitud de un rectángulo: 10 4
Área del rectángulo = 40
linuxhint@: ~ $

Hemos dado la misma entrada del usuario para las variables L y W como "5" ya que ambos representan la longitud y el ancho del cuadrado, que son iguales en valor. La salida ha devuelto el cuadrado del valor 5 como el área del cuadrado.

Ejemplo # 02

Con la ayuda de este ejemplo, crearemos una matriz de punteros de funciones donde cada elemento de la matriz almacenará la función de puntero para diferentes funciones. Por ejemplo, declararemos las dos funciones normales de resta y adición con el tipo de retorno entero con dos parámetros de función que tienen el tipo de datos de entero. Luego declararemos una variedad de punteros de funciones e inicializaremos a los dos miembros de la matriz con nuestras dos funciones declaradas para suma y resta. Luego usaremos la matriz de la función de puntero con el índice del puntero de la función de matriz, E.gramo., "Arr [i]".

Las funciones de adición y sustracción utilizarán los valores de lectura de las variables inicializadas a y b. Luego mostraremos estos resultados llamando al método printf (). El siguiente fragmento muestra el programa completo para este ejemplo:

#incluir
int adición (int a, int b)
devolver a + b;
int subtracción (int a, int b)
devolver a - b;
int main ()
int a, b;
int (*función [2]) (int, int);
función [0] = adición;
función [1] = subtracción;
printf ("Ingrese dos valores:");
scanf (" %d %d", & a, & b);
int resultado = (*función [0]) (a, b);
printf ("adición (a+b) = %d \ n", resultado);
resultado = (*función [1]) (a, b);
printf ("subtracción (a-b) = %d \ n", resultado);
regresar 0;
linuxhint@: ~ $ ./FUNC
Ingrese dos valores: 33
11
Adición (a+b) = 44
Resta (a-b) = 22
linuxhint@: ~ $

Conclusión

La guía contiene un ejemplo básico y una explicación de los punteros de la función en el idioma C. Nota Para cambiar la sintaxis a medida que cambia la cantidad de parámetros y el tipo de datos, así como si cambia el tipo de retorno de la función que el puntero de la función deberá cambiar respectivamente.