Programacion

Solo disponible en BuenasTareas
  • Páginas : 12 (2888 palabras )
  • Descarga(s) : 0
  • Publicado : 26 de noviembre de 2011
Leer documento completo
Vista previa del texto
macion

Parámetros por valor y referencia

Variable referencia
Una referencia o variable referencia en C++ es simplemente otro nombre o alias de una variable. En esencia una referencia actúa igual que un puntero (contiene la dirección de un objeto), pero funciona de diferente modo, ya que no se puede modificar la variable a la que está asociada la referencia, pero sí se puede modificar elvalor de la variable asociada.
Parámetros por valor y por referencia
En C++ el paso por valor significa que al compilar la función y el código que llama a la función, ésta recibe una copia de los valores de los parámetros que se le pasan como argumentos. Las variables reales no se pasan a la función, sólo copias de su valor.
Cuando una función debe modificar el valor de la variable pasada comoparámetro y que esta modificación retorne a la función llamadora, se debe pasar el parámetro por referencia. En este método, el compilador no pasa una copia del valor del argumento; en su lugar, pasa una referencia, que indica a la función dónde existe la variable en memoria.
La referencia que una función recibe es la dirección de la variable. Es decir, pasar un argumento por referencia es,simplemente, indicarle al compilador que pase la dirección del argumento.
Ejemplo:
void demo(int &valor)
{
valor=5;
cout<<valor<<endl;
}
void main()
{int n=10;
cout<<n<<endl;
demo(n);
cout<<n<<endl;
}
La salida de este programa será: 10 5 5
Una limitación del método de paso por referencia es que se pueden pasar sólo variables a la función. No sepueden utilizar constantes ni expresiones en la línea de llamada a la misma.
Los modificadores const y volatile
El número y tipo de argumentos de una definición de función debe coincidir con su correspondiente prototipo de función. Si no existe correspondencia exacta, el compilador C++ intentará convertir el tipo de los argumentos reales de modo que se puedan concordar con los argumentos formalesen las funciones llamadas. Los modificadores const y volatile pueden preceder a los tipos de los argumentos formales para indicar instrucciones específicas al compilador.
Se puede preceder a un tipo de argumento con el modificador const para indicar que este argumento no puede ser modificado. Al objeto al cual se aplica no se le puede asignar un valor o modificar de ningún modo.
El modoficadorvolatile se puede utilizar para indicar que los argumentos formales pueden ser modificados en la ejecución del programa, bien por el propio programador o por el propio sistema, es decir, cualquier suceso externo al programa. Típicamente, las variables volátiles se necesitan sólo para valores que pueden ser modificados por una rutina de interrupción que opera independientemente del programa. Ladeclaración de una variable volátil es volatile int k;

Recursividad
     Una función se puede llamar a sí misma, a este proceso se le llama recursividad y puede ser directa e indirecta. Es directa cuando una función se llama a sí misma. Ocurre recursividad indirecta cuando una función llama a otra función y ésta última llama a la primera. Ambos tipos de recursividad se dan en dos formas,aquellas que eventualmente terminan y producen un resultado y el caso en que la recursividad nunca termina produciendo un bucle infinito y de aquí una falla en tiempo de ejecución por falta de memoria. Algunos programadores piensan que este último caso es divertido, sobre todo cuando le pasa a otra persona. :-)
     Es importante notar que cuando una función se llama a sí misma, una nueva copia de éstafunción es la que se ejecuta. Las variables locales de la segunda función no interfieren con las variables locales de la primera, así mismo, las variables locales no se pueden afectar mutuamente. Tomemos como ejemplo un programa que calcule el factorial de un numero entero introducido por el usuario. El factorial está definido como el producto del número en cuestion por todos los numeros enteros...
tracking img