ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programacion funciones


Enviado por   •  16 de Abril de 2015  •  1.010 Palabras (5 Páginas)  •  106 Visitas

Página 1 de 5

Dediquemos algo más de tiempo a las funciones.

Hasta ahora siempre hemos declarado los parámetros de nuestras funciones del mismo modo. Sin embargo, éste no es el único modo que existe para pasar parámetros.

La forma en que hemos declarado y pasado los parámetros de las funciones hasta ahora es la que normalmente se conoce como "por valor". Esto quiere decir que cuando el control pasa a la función, los valores de los parámetros en la llamada se copian a "objetos" locales de la función, estos "objetos" son de hecho los propios parámetros.

Lo veremos mucho mejor con un ejemplo:

#include <iostream>

using namespace std;

int funcion(int n, int m);

int main() {

int a, b;

a = 10;

b = 20;

cout << "a,b ->" << a << ", " << b << endl;

cout << "funcion(a,b) ->"

<< funcion(a, b) << endl;

cout << "a,b ->" << a << ", " << b << endl;

cout << "funcion(10,20) ->"

<< funcion(10, 20) << endl;

return 0;

}

int funcion(int n, int m) {

n = n + 2;

m = m - 5;

return n+m;

}

Bien, ¿qué es lo que pasa en este ejemplo?

Empezamos haciendo a = 10 y b = 20, después llamamos a la función "funcion" con las objetos a y b como parámetros. Dentro de "funcion" esos parámetros se llaman n y m, y sus valores son modificados. Sin embargo al retornar a main, a y b conservan sus valores originales. ¿Por qué?

La respuesta es que lo que pasamos no son los objetos a y b, sino que copiamos sus valores a los objetos n y m.

Piensa, por ejemplo, en lo que pasa cuando llamamos a la función con parámetros constantes, es lo que pasa en la segunda llamada a "funcion". Los valores de los parámetros no pueden cambiar al retornar de "funcion", ya que esos valores son constantes.

Si los parámetros por valor no funcionasen así, no sería posible llamar a una función con valores constantes o literales.

Pasando parámetros por referencia

^

Si queremos que los cambios realizados en los parámetros dentro de la función se conserven al retornar de la llamada, deberemos pasarlos por referencia. Esto se hace declarando los parámetros de la función como referencias a objetos. Por ejemplo:

#include <iostream>

using namespace std;

int funcion(int &n, int &m);

int main() {

int a, b;

a = 10; b = 20;

cout << "a,b ->" << a << ", " << b << endl;

cout << "funcion(a,b) ->" << funcion(a, b) << endl;

cout << "a,b ->" << a << ", " << b << endl;

/* cout << "funcion(10,20) ->"

<< funcion(10, 20) << endl; // (1)

es ilegal pasar constantes como parámetros cuando

estos son referencias */

return 0;

}

int funcion(int &n, int &m) {

n = n + 2;

m = m - 5;

return n+m;

}

En este caso, los objetos "a" y "b" tendrán valores distintos después de llamar a la función. Cualquier cambio de valor que realicemos en los parámetros dentro de la función, se hará también en los objetos referenciadas.

Esto quiere decir que no podremos llamar a la función con parámetros constantes, como se indica en (1), ya que aunque es posible definir referencias a constantes, en este ejemplo, la función tiene como parámetros referencias

...

Descargar como (para miembros actualizados)  txt (6 Kb)  
Leer 4 páginas más »
Disponible sólo en Clubensayos.com