A función definida por el usuario Es un tipo de función en lenguaje C que es definida por el propio usuario para realizar alguna tarea específica. Proporciona reutilización de código y modularidad a nuestro programa. Las funciones definidas por el usuario se diferencian de las funciones integradas en que su funcionamiento lo especifica el usuario y no se requiere ningún archivo de encabezado para su uso.
En este artículo aprenderemos sobre función definida por el usuario, prototipo de función, definición de función, llamada de función y diferentes formas en que podemos pasar parámetros a una función.
¿Cómo utilizar funciones definidas por el usuario en C?
Para utilizar una función definida por el usuario, primero debemos comprender las diferentes partes de su sintaxis. La función definida por el usuario en C se puede dividir en tres partes:
- Prototipo de función
- Definición de función
- Llamada de función
Prototipo de función C
Un prototipo de función también se conoce como declaración de función y especifica la nombre de la función, parámetros de la función, y tipo de retorno . El prototipo de función no contiene el cuerpo de la función. Básicamente se utiliza para informar al compilador sobre la existencia de la función definida por el usuario que se puede utilizar en la parte posterior del programa.
Sintaxis
return_type function_name (type1 arg1 , type2 arg2 , ... typeN argN );>
También podemos omitir el nombre de los argumentos en el prototipo de función. Entonces,
return_type function_name (type1 , type2 , ... typeN);>
Definición de función C
Una vez que se ha llamado a la función, la definición de la función contiene las declaraciones reales que se ejecutarán. Todas las declaraciones de la definición de función están encerradas dentro { } tirantes.
Sintaxis
return_type function_name (type1 arg1 , type2 arg2 .... typeN argN ) { // actual statements to be executed // return value if any }> Nota: Si la llamada a la función está presente después de la definición de la función, podemos omitir la parte del prototipo de la función y definir la función directamente.
Llamada de función C
Para transferir el control a una función definida por el usuario, debemos llamarla. Las funciones se llaman usando sus nombres seguidos de corchetes. Sus argumentos se pasan entre corchetes.
Sintaxis
function_name(arg1, arg2, ... argN);>
Ejemplo de función definida por el usuario
El siguiente programa en C ilustra cómo utilizar funciones definidas por el usuario en nuestro programa.
C
// C Program to illustrate the use of user-defined function> #include> // Function prototype> int> sum(>int>,>int>);> // Function definition> int> sum(>int> x,>int> y)> {> >int> sum;> >sum = x + y;> >return> x + y;> }> // Driver code> int> main()> {> >int> x = 10, y = 11;> >// Function call> >int> result = sum(x, y);> >printf>(>'Sum of %d and %d = %d '>, x, y, result);> >return> 0;> }> |
>
>Producción
pitón de cadena f
Sum of 10 and 11 = 21>
Componentes de la definición de función
Hay tres componentes de la definición de función:
- Parámetros de función
- Cuerpo de función
- Valor de retorno
1. Parámetros de función
Los parámetros de función (también conocidos como argumentos) son los valores que la persona que llama pasa a la función llamada. Podemos pasar ninguno o cualquier número de parámetros de función a la función.
Tenemos que definir el nombre de la función y su tipo en la definición de la función y solo podemos pasar el mismo número y tipo de parámetros en la llamada a la función.
Ejemplo
int foo ( int a, int b) ;>
Aquí, a y b son parámetros de función.
Nota: El lenguaje C proporciona un método mediante el cual podemos pasar un número variable de argumentos a la función. Estas funciones se denominan funciones variadas.
2. Cuerpo funcional
El cuerpo de la función es el conjunto de declaraciones encerradas entre llaves { }. Son las declaraciones que se ejecutan cuando se llama a la función.
Ejemplo
int foo (int a, int b) { int sum = a + b; return sum; }> Aquí, las declaraciones entre { y } es el cuerpo funcional.
3. Valor de retorno
El valor de retorno es el valor devuelto por la función a su llamador. Una función solo puede devolver un valor único y es opcional. Si no se va a devolver ningún valor, el tipo de devolución se define como nulo.
El devolver palabra clave se utiliza para devolver el valor de una función.
Sintaxis
return ( expression );>
Ejemplo
int foo (int a, int b) { return a + b; }> Nota: Podemos usar punteros o estructuras para devolver múltiples valores de una función en C.
Pasar parámetros a funciones definidas por el usuario
Podemos pasar parámetros a una función en C usando dos métodos:
- Llamar por valor
- Llamar por referencia
1. Llamar por valor
En la llamada por valor, se pasa una copia del valor a la función y los cambios que se realizan en la función no se reflejan en los valores. Los argumentos reales y formales se crean en diferentes lugares de la memoria.
Ejemplo
C
descargar xvideoservicethief ubuntu 14.04
// C program to show use of> // call by value> #include> void> swap(>int> a,>int> b)> {> >int> temp = a;> >a = b;> >b = temp;> }> // Driver code> int> main()> {> >int> x = 10, y = 20;> >printf>(>'Values of x and y before swap are: %d, %d
'>, x,> >y);> >swap(x, y);> >printf>(>'Values of x and y after swap are: %d, %d'>, x,> >y);> >return> 0;> }> |
javamvc
>
>Producción
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 10, 20>
Nota: Los valores no se cambian en la llamada por valor ya que no se pasan por referencia.
2. Llamada por referencia
En una llamada por Referencia, la dirección del argumento se pasa a la función y los cambios que se realizan en la función se reflejan en los valores. Usamos el punteros del tipo requerido para recibir la dirección en la función.
Ejemplo
C
// C program to implement> // Call by Reference> #include> void> swap(>int>* a,>int>* b)> {> >int> temp = *a;> >*a = *b;> >*b = temp;> }> // Driver code> int> main()> {> >int> x = 10, y = 20;> >printf>(>'Values of x and y before swap are: %d, %d
'>, x,> >y);> >swap(&x, &y);> >printf>(>'Values of x and y after swap are: %d, %d'>, x,> >y);> >return> 0;> }> |
>
>Producción
Values of x and y before swap are: 10, 20 Values of x and y after swap are: 20, 10>
Para obtener más detalles, consulte este artículo: Diferencia entre llamada por valor y llamada por referencia
Ventajas de las funciones definidas por el usuario
Las ventajas de utilizar funciones en el programa son las siguientes:
- Se puede evitar la duplicación de código en los programas mediante el uso de funciones. El código se puede escribir más rápidamente y, como resultado, ser más legible.
- El código se puede dividir y conquistar mediante funciones. Este proceso se conoce como Divide y Conquistarás. Es difícil escribir grandes cantidades de código dentro de la función principal, así como realizar pruebas y depuración. Nuestra única tarea se puede dividir en varias subtareas más pequeñas mediante el uso de funciones, lo que reduce la complejidad general.
- Por ejemplo, cuando se usa pow, sqrt, etc. en C sin saber cómo se implementa, se pueden ocultar los detalles de implementación con funciones.
- Con pocas o ninguna modificación, las funciones desarrolladas en un programa se pueden utilizar en otro, lo que reduce el tiempo de desarrollo.