Funciones en C/C++

Una función es un conjunto de declaraciones que toman entradas, hacen algún cálculo específico y producen una salida.

La idea es juntar algunas tareas comunes o repetidas y crear una función para que, en lugar de escribir el mismo código una y otra vez para diferentes entradas, podamos llamar a la función.

La forma general de una función es:

return_type function_name([ arg1_type arg1_name, ... ]) { code }  

 
Ejemplo:
A continuación se muestra un programa C/C++ simple para demostrar funciones.

C

#include <stdio.h>
  
// An example function that takes two parameters 'x' and 'y'
// as input and returns max of two input numbers
int max(int x, int y)
{
    if (x > y)
      return x;
    else
      return y;
}
  
// main function that doesn't receive any parameter and
// returns integer.
int main(void)
{
    int a = 10, b = 20;
  
    // Calling above function to find max of 'a' and 'b'
    int m = max(a, b);
  
    printf("m is %d", m);
    return 0;
}

C++

#include <iostream>
using namespace std;
  
int max(int x, int y) 
{ 
    if (x > y) 
    return x; 
    else
    return y; 
} 
  
int main() {
    int a = 10, b = 20; 
  
    // Calling above function to find max of 'a' and 'b' 
    int m = max(a, b); 
  
    cout << "m is " << m; 
    return 0; 
}

Producción:

m is 20


¿Por qué necesitamos funciones?

  • Las funciones nos ayudan a reducir la redundancia de código. Si la funcionalidad se realiza en varios lugares del software, en lugar de escribir el mismo código, una y otra vez, creamos una función y la llamamos en todas partes. Esto también ayuda en el mantenimiento, ya que tenemos que cambiar en un lugar si hacemos cambios futuros en la funcionalidad.
  • Las funciones hacen que el código sea modular. Considere un archivo grande que tiene muchas líneas de código. Se vuelve realmente simple leer y usar el código si el código se divide en funciones.
  • Las funciones proporcionan abstracción. Por ejemplo, podemos usar funciones de biblioteca sin preocuparnos por su funcionamiento interno.

Declaración
de función Una declaración de función informa al compilador sobre el número de parámetros que toma la función, los tipos de datos de los parámetros y el tipo de retorno de la función. Poner los nombres de los parámetros en la declaración de la función es opcional en la declaración de la función, pero es necesario ponerlos en la definición. A continuación se muestra un ejemplo de declaraciones de funciones. (los nombres de los parámetros no están en las declaraciones a continuación)

// A function that takes two integers as parameters
// and returns an integer
int max(int, int);
  
// A function that takes an int pointer and an int variable as parameters
// and returns a pointer of type int
int *swap(int*,int);
  
// A function that takes a charas parameters
// and returns an reference variable
char *call(char b);
  
// A function that takes a char and an int as parameters
// and returns an integer
int fun(char, int);

Siempre se recomienda declarar una función antes de usarla (ver this , this y this para más detalles)

En C, podemos hacer tanto la declaración como la definición en el mismo lugar, como se hizo en el programa de ejemplo anterior.

C también permite declarar y definir funciones por separado, esto es especialmente necesario en el caso de funciones de biblioteca. Las funciones de biblioteca se declaran en archivos de encabezado y se definen en archivos de biblioteca. A continuación se muestra un ejemplo de declaración.

 
Paso de parámetros a las funciones
Los parámetros que se pasan a la función se denominan parámetros reales . Por ejemplo, en el programa anterior, 10 y 20 son parámetros reales.
Los parámetros que recibe la función se denominan parámetros formales . Por ejemplo, en el programa anterior, x e y son parámetros formales.
Hay dos formas más populares de pasar parámetros.

Paso por valor: en este método de paso de parámetros, los valores de los parámetros reales se copian en los parámetros formales de la función y los dos tipos de parámetros se almacenan en diferentes ubicaciones de memoria. Por lo tanto, los cambios realizados dentro de las funciones no se reflejan en los parámetros reales de la persona que llama.

Pasar por referencia Tanto los parámetros reales como los formales se refieren a las mismas ubicaciones, por lo que cualquier cambio realizado dentro de la función se refleja en los parámetros reales de la persona que llama.

Los parámetros siempre se pasan por valor en C. Por ejemplo. en el siguiente código, el valor de x no se modifica usando la función fun().

C

#include <stdio.h>
void fun(int x)
{
   x = 30;
}
  
int main(void)
{
    int x = 20;
    fun(x);
    printf("x = %d", x);
    return 0;
}

C++

#include <iostream>
using namespace std;
  
void fun(int x) {
    x = 30;
}
  
int main() {
    int x = 20;
    fun(x);
    cout << "x = " << x;
    return 0;
}

Producción:

x = 20

Sin embargo, en C, podemos usar punteros para obtener el efecto de referencia de paso. Por ejemplo, considere el siguiente programa. La función fun() espera un puntero ptr a un número entero (o una dirección de un número entero). Modifica el valor en la dirección ptr. El operador de desreferencia * se utiliza para acceder al valor en una dirección. En la declaración ‘*ptr = 30’, el valor en la dirección ptr se cambia a 30. El operador de dirección & se usa para obtener la dirección de una variable de cualquier tipo de datos. En la declaración de llamada de función ‘fun(&x)’, la dirección de x se pasa para que x pueda modificarse usando su dirección.

C

# include <stdio.h>
void fun(int *ptr)
{
    *ptr = 30;
}
   
int main()
{
  int x = 20;
  fun(&x);
  printf("x = %d", x);
   
  return 0;
}

C++

#include <iostream>
using namespace std;
  
void fun(int *ptr)
{
    *ptr = 30;
}
  
int main() {
    int x = 20;
    fun(&x);
    cout << "x = " << x;
      
    return 0;
}

Producción:

x = 30

 
Los siguientes son algunos puntos importantes acerca de las funciones en C.
1) Cada programa C tiene una función llamada main() que es llamada por el sistema operativo cuando un usuario ejecuta el programa.

2) Cada función tiene un tipo de retorno. Si una función no devuelve ningún valor, se utiliza void como tipo de devolución. Además, si el tipo de devolución de la función es nulo, aún podemos usar la declaración de devolución en el cuerpo de la definición de la función al no especificar ninguna constante, variable, etc. con ella, solo mencionando el ‘retorno;’ declaración que simbolizaría la terminación de la función como se muestra a continuación:

void function name(int a)
{
.......  //Function Body
return;  //Function execution would get terminated
}             

3) En C, las funciones pueden devolver cualquier tipo excepto arrays y funciones. Podemos sortear esta limitación devolviendo el puntero a la array o el puntero a la función.
4) La lista de parámetros vacía en C significa que la lista de parámetros no está especificada y la función se puede llamar con cualquier parámetro. En C, no es buena idea declarar una función como fun(). Para declarar una función que solo se puede llamar sin ningún parámetro, debemos usar «void fun (void)».
Como nota al margen, en C++, una lista vacía significa que solo se puede llamar a una función sin ningún parámetro. En C++, tanto void fun() como void fun(void) son iguales.
5) Si en un programa en C, se llama a una función antes de su declaración, el compilador de C asume automáticamente la declaración de esa función de la siguiente manera:
nombre de función int();
Y en ese caso, si el tipo de retorno de esa función es diferente a INT, el compilador mostraría un error.

Función principal:
La función principal es una función especial. Todo programa C++ debe contener una función llamada main. Sirve como punto de entrada para el programa. La computadora comenzará a ejecutar el código desde el comienzo de la función principal.

Tipos de función principal:

1) El primer tipo es – función principal sin parámetros:

// Without Parameters
int main()
{
   ...
   return 0;
}

2) El segundo tipo es la función principal con parámetros:

// With Parameters
int main(int argc, char * const argv[])
{
   ...
   return 0;
}

La razón para tener la opción de parámetro para la función principal es permitir la entrada desde la línea de comando.

Cuando usa la función principal con parámetros, guarda cada grupo de caracteres (separados por un espacio) después del nombre del programa como elementos en una array llamada argv.

Dado que la función principal tiene el tipo de retorno de int, el programador siempre debe tener una declaración de retorno en el código. El número que se devuelve se utiliza para informar al programa que llama cuál fue el resultado de la ejecución del programa. Devolver 0 indica que no hubo problemas.

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 *