Hola y bienvenidos.
Vamos a ver a continuación el tema de paso por valor en el lenguaje.
Están listos?
Vamos.
Bien, ya hemos visto cómo se copian los valores cuando trabajamos con variables en el lenguaje.
C Sin embargo, vamos a ver ahora cómo aplicar este mismo concepto, pero cuando trabajamos con funciones.
Así que el concepto de paso por valor es básicamente el mismo concepto que ya hemos estudiado de copia
de valor, pero como hemos comentado, aplicado a funciones.
Así que vamos a definir en primer lugar una función.
Esta función es de tipo void, no regresa nada y se va a llamar Paso por valor.
Vamos a definir un parámetro de tipo entero.
Esto es lo que va a recibir esta función, un valor de tipo entero.
Y entonces, de manera interna realizamos una modificación sobre esta variable.
Y esto lo vamos a hacer así para comprobar si hacemos cambios sobre la variable definida en la función.
Vamos a ver si afecta el argumento que se envió a esta variable, es decir, la variable más externa.
Bien, por lo tanto, esta función solamente lo que hace es recibir una copia de un valor.
Trata de modificarlo y vamos a comprobar si modifica el valor más externo, el valor de la variable
más externa o no.
Por otro lado, tenemos nuestra función principal.
Vamos a definir una variable llamada argumento.
Le asignamos un primer valor, el valor de diez, y posteriormente mandamos a llamar la función de paso
por valor le pasamos como información precisamente esta variable de argumento y entonces esto lo vamos
a realizar para comprobar si se modifica el valor a través de la función o no, Y por último mandamos
a imprimir el valor de la variable de argumento precisamente para saber si se modificó su valor a través
de la función o no se realizó este cambio.
Bien, entonces si ejecutamos lo que va a suceder en memoria es lo siguiente empezamos a ejecutar la
función principal, se crea nuestra variable de argumento y se inicializa con el valor de diez en cierta
dirección de memoria.
Por ejemplo.
En este caso en la dirección de memoria 0X333.
Posteriormente como siguiente paso mandamos a llamar la función de paso por valor.
Esto quiere decir que se pone en pausa la función principal.
Pasamos el control, ahora la función de paso por valor y entonces la variable de parámetro se crea
en memoria.
Recordemos que es una variable local al método de paso por valor.
Por lo tanto son variables distintas en memoria.
Y aquí es donde aplica precisamente el concepto de paso por valor.
Ya sabemos cómo realizar copia de valores, entonces aquí prácticamente es exactamente el mismo concepto
pero aplicado a funciones.
Así que en este caso el argumento va a realizar una copia de su valor hacia la variable de parámetro.
Ambas variables son distintas en memoria y entonces solamente se realiza una copia de la variable de
argumento a la variable de parámetro, pero la variable de parámetro se encuentra en diferente posición
de memoria.
Por lo tanto, la variable de parámetro se inicializa con una copia del valor de la variable de argumento
y así la variable de parámetro se encuentra, por ejemplo en la dirección de memoria 0X4 y su valor
inicial es el valor de diez, así que la barrera de parámetro solamente recibe una copia de la variable
de argumento.
Y si continuamos la ejecución de nuestra función de paso por valor, se va a modificar el valor de la
variable de parámetro.
Así que en memoria.
Ahora en lugar de tener el valor de diez, se modifica por el valor de twenty.
Pero podemos observar que como son diferentes variables en memoria, el cambio realizado por la variable
de parámetro no afecta en nada a la variable de argumento, ya que son dos variables distintas y entonces
la modificación en la variable de parámetro no afecta para nada la variable más externa, la variable
de argumento.
Así que por ello a este concepto se le conoce como paso por valor, ya que solamente estamos pasando
una copia del valor y las modificaciones de manera interna dentro de la función no afectan a la variable
más externa.
Bien, pues obviamente termina de ejecutarse la función de paso por valor, regresa el control a la
función principal y entonces por último vamos a mandar a imprimir la variable de argumento simplemente
para comprobar que se imprime el valor de diez, ya que la variable de parámetro se destruye una vez
que termina de ejecutarse la función de paso por valor y entonces.
En conclusión, los cambios realizados en la función no afectan a la variable externa, es decir, a
la variable de argumento solo se recibe una copia y por lo tanto en memoria son variables distintas,
como lo podemos comprobar.
Bien, vamos a detener hasta aquí y en el siguiente vídeo vamos a realizar este ejemplo para que todo
quede completamente claro, así que continuamos.
Saludos.