Funciones C ++
Una función es un grupo de declaraciones que juntas realizan una tarea. Cada programa C ++ tiene al menos una función, que esmain(), y todos los programas más triviales pueden definir funciones adicionales.
Puede dividir su código en funciones separadas. La forma en que divide su código entre las diferentes funciones depende de usted, pero lógicamente la división suele ser tal que cada función realiza una tarea específica.
Una función declarationle dice al compilador sobre el nombre de una función, el tipo de retorno y los parámetros. Una funcióndefinition proporciona el cuerpo real de la función.
La biblioteca estándar de C ++ proporciona numerosas funciones integradas que su programa puede llamar. Por ejemplo, funciónstrcat() para concatenar dos cadenas, función memcpy() para copiar una ubicación de memoria a otra ubicación y muchas más funciones.
Una función se conoce con varios nombres como método, subrutina, procedimiento, etc.
Definición de una función
La forma general de una definición de función de C ++ es la siguiente:
return_type function_name( parameter list ) {
body of the function
}
Una definición de función de C ++ consta de un encabezado de función y un cuerpo de función. Aquí están todas las partes de una función:
Return Type- Una función puede devolver un valor. losreturn_typees el tipo de datos del valor que devuelve la función. Algunas funciones realizan las operaciones deseadas sin devolver un valor. En este caso, return_type es la palabra clavevoid.
Function Name- Este es el nombre real de la función. El nombre de la función y la lista de parámetros juntos constituyen la firma de la función.
Parameters- Un parámetro es como un marcador de posición. Cuando se invoca una función, se pasa un valor al parámetro. Este valor se conoce como parámetro o argumento real. La lista de parámetros se refiere al tipo, orden y número de parámetros de una función. Los parámetros son opcionales; es decir, una función puede no contener parámetros.
Function Body - El cuerpo de la función contiene una colección de declaraciones que definen lo que hace la función.
Ejemplo
A continuación se muestra el código fuente de una función llamada max(). Esta función toma dos parámetros num1 y num2 y devuelve el mayor de ambos:
// function returning the max between two numbers
int max(int num1, int num2) {
// local variable declaration
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Declaraciones de funciones
Una función declarationle dice al compilador sobre el nombre de una función y cómo llamar a la función. El cuerpo real de la función se puede definir por separado.
Una declaración de función tiene las siguientes partes:
return_type function_name( parameter list );
Para la función max () definida anteriormente, la siguiente es la declaración de función:
int max(int num1, int num2);
Los nombres de los parámetros no son importantes en la declaración de funciones, solo se requiere su tipo, por lo que la siguiente también es una declaración válida:
int max(int, int);
La declaración de función es necesaria cuando define una función en un archivo fuente y llama a esa función en otro archivo. En tal caso, debe declarar la función en la parte superior del archivo que llama a la función.
Llamar a una función
Al crear una función C ++, da una definición de lo que tiene que hacer la función. Para usar una función, deberá llamar o invocar esa función.
Cuando un programa llama a una función, el control del programa se transfiere a la función llamada. Una función llamada realiza una tarea definida y cuando se ejecuta su declaración de retorno o cuando se alcanza su llave de cierre de finalización de función, devuelve el control del programa al programa principal.
Para llamar a una función, simplemente necesita pasar los parámetros requeridos junto con el nombre de la función, y si la función devuelve un valor, entonces puede almacenar el valor devuelto. Por ejemplo
#include <iostream>
using namespace std;
// function declaration
int max(int num1, int num2);
int main () {
// local variable declaration:
int a = 100;
int b = 200;
int ret;
// calling a function to get max value.
ret = max(a, b);
cout << "Max value is : " << ret << endl;
return 0;
}
// function returning the max between two numbers
int max(int num1, int num2) {
// local variable declaration
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Mantuve la función max () junto con la función main () y compilé el código fuente. Mientras se ejecuta el ejecutable final, produciría el siguiente resultado:
Max value is : 200
Argumentos de función
Si una función va a utilizar argumentos, debe declarar variables que acepten los valores de los argumentos. Estas variables se denominanformal parameters de la función.
Los parámetros formales se comportan como otras variables locales dentro de la función y se crean al entrar en la función y se destruyen al salir.
Al llamar a una función, hay dos formas en que se pueden pasar argumentos a una función:
No Señor | Tipo de llamada y descripción |
---|---|
1 | Llamar por valor
Este método copia el valor real de un argumento en el parámetro formal de la función. En este caso, los cambios realizados en el parámetro dentro de la función no tienen ningún efecto en el argumento. |
2 | Llamar por puntero
Este método copia la dirección de un argumento en el parámetro formal. Dentro de la función, la dirección se usa para acceder al argumento real usado en la llamada. Esto significa que los cambios realizados en el parámetro afectan el argumento. |
3 | Llamar por referencia
Este método copia la referencia de un argumento en el parámetro formal. Dentro de la función, la referencia se usa para acceder al argumento real usado en la llamada. Esto significa que los cambios realizados en el parámetro afectan el argumento. |
Por defecto, C ++ usa call by valuepara pasar argumentos. En general, esto significa que el código dentro de una función no puede alterar los argumentos utilizados para llamar a la función y el ejemplo mencionado anteriormente mientras se llama a la función max () utiliza el mismo método.
Valores predeterminados para parámetros
Cuando define una función, puede especificar un valor predeterminado para cada uno de los últimos parámetros. Este valor se utilizará si el argumento correspondiente se deja en blanco al llamar a la función.
Esto se hace usando el operador de asignación y asignando valores para los argumentos en la definición de la función. Si no se pasa un valor para ese parámetro cuando se llama a la función, se usa el valor predeterminado dado, pero si se especifica un valor, este valor predeterminado se ignora y en su lugar se usa el valor pasado. Considere el siguiente ejemplo:
#include <iostream>
using namespace std;
int sum(int a, int b = 20) {
int result;
result = a + b;
return (result);
}
int main () {
// local variable declaration:
int a = 100;
int b = 200;
int result;
// calling a function to add the values.
result = sum(a, b);
cout << "Total value is :" << result << endl;
// calling a function again as follows.
result = sum(a);
cout << "Total value is :" << result << endl;
return 0;
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
Total value is :300
Total value is :120