Hola y bienvenidos.
Vamos a ver a continuación el ejemplo de paso por valor en el lenguaje C.
Están listos?
Vamos.
Bien.
Vamos a limpiar nuestro código.
Y vamos a realizar a continuación el ejercicio de paso por valor en el lenguaje C.
Ahora, este concepto es importante precisamente porque cuando estamos pasando información entre funciones
necesitamos saber cómo se pasa esta información.
Y entonces cuando trabajamos con tipos primitivos, como puede ser el tipo entero flotante de tipo char
bool, etc, entonces cuando trabajamos con estos tipos de datos, la información simplemente se pasa
una copia del valor de la variable que estemos trabajando.
En cambio, cuando trabajamos, por ejemplo con apuntadores o cuando trabajamos con tipos arreglo,
vamos a ver que se pasa la referencia de memoria y no una copia del valor.
Por ello es que estamos estudiando estos temas a profundidad, ya que es bastante importante entenderlos
a detalle.
Así que vamos a ver este ejemplo para trabajar con el concepto de paso por valor.
Vamos a definir en primer lugar nuestra función.
Se va a llamar Cambiar valor y ya sabemos que esta función tiene como objetivo comprobar si la información
que estamos pasando a esta función modifica el valor de la variable más externa.
Pero ya sabemos que solamente vamos a recibir una copia del valor.
Entonces los cambios realizados en nuestra función de manera más interna no afectan a la variable más
externa.
Aún así, vamos a comprobarlo.
Ya tenemos definida nuestra función no retorna, no regresa ningún tipo de información.
Solamente intenta cambiar el valor que está recibiendo en la variable de parámetro.
Ahora, en nuestra función principal definimos una variable llamada argumento.
Y mandamos a imprimir el valor antes de mandar a llamar nuestra función, simplemente para comprobar
cuál es el valor que tenemos antes de llamar a la función.
Es un valor de tipo entero y mandamos a imprimir precisamente el valor de esta variable de argumento.
Ahora, una vez que ya hemos mandado a imprimir este valor en primer lugar, ahora sí podemos mandar
a llamar la función cambiar valor y le pasamos como información la variable de argumento.
Así que esto lo que hace es pasar una copia del valor, debido a que la variable de argumento es un
tipo primitivo, un tipo básico.
Entonces se pasa simplemente una copia del valor hacia la variable de parámetro.
Y por último, vamos a mandar a imprimir la variable de argumento, pero después de haber mandado a
llamar la función para saber si de manera interna la función pudo realizar un cambio sobre esta variable
o no, así que mandamos a imprimir después de llamar la función.
Es un valor de tipo entero e imprimimos esta variable de argumento.
Con eso ya tenemos prácticamente todo nuestro código.
Vamos a ejecutarlo, pero antes de ejecutarlo, vamos a agregar un salto de línea para que quede esta
impresión en líneas distintas y entonces podemos observar antes de llamar la función, se imprime el
valor de diez y después de mandar a llamar nuestra función, no se realizó ninguna modificación desde
la función.
Tenemos exactamente el mismo valor el valor de diez, aunque de manera interna.
Dentro de la función realizamos un cambio.
Solamente se recibió una copia de la variable de argumento hacia la variable de parámetro.
Vamos a ver nuestra animación para que todo esto quede más claro.
En primer lugar, tenemos nuestro método principal.
Se define la variable de argumento en cierta dirección de memoria.
Así que hasta aquí solamente se está definiendo nuestra variable de argumento.
Si se llegara a ejecutar la línea nueve, entonces tendríamos en memoria lo siguiente Tenemos nuestra
variable de argumento con el valor de diez en cierta dirección de memoria.
Ahora, como siguiente paso, se mandaría a imprimir el valor antes de llamar la función.
Por lo tanto, imprimiría por primera vez este valor de diez, ya que es el valor que tiene la variable
de argumento.
Ahora, si continuamos, si se llegara a ejecutar la línea 11, entonces se manda llamar nuestra función.
Cambia el valor, se pone en pausa la ejecución de la función principal.
Pasamos a la función de cambiar valor y la variable de parámetro se crea en memoria.
Así que podemos observar que se manda llamar Nuestra función Cambia el valor, se crea la variable de
parámetro y entonces aquí es donde precisamente se aplica el concepto de paso por valor.
Simplemente estamos pasando una copia del valor de la variable de argumento hacia la variable de parámetro.
Pero por ello, cualquier modificación que hagamos sobre esta variable vamos a ver que no va a afectar
en nada a la variable más externa, ya que estas variables son variables distintas en memoria.
Como podemos observar, cada una tiene su propia dirección de memoria.
Son variables muy distintas en memoria.
Así que para inicializar esta variable simplemente se pasa una copia.
Podemos observar que la variable de parámetro.
Si se ejecuta esta línea, la línea cuatro se crea la variable de parámetro con el valor inicial de
diez.
Ahora, de manera interna, si realizamos un cambio, si se ejecuta la línea cinco, entonces ahora
la variable de parámetro tiene el valor de 20.
Podemos ver que tenemos el valor de 20, pero no afecta en nada el valor de la variable más externa.
De igual manera, como ya hemos comentado, son variables distintas en memoria.
Una vez que termina de ejecutarse la línea cinco, entonces termina de ejecutarse la función.
Se elimina de la memoria la función, incluyendo su variable y podemos ver que regresa el control a
la línea 11.
Aquí no hay nada más que procesar ya que esta función no regresa Ningún tipo de información es de tipo
void.
Por lo tanto, continuamos con la línea 12 y entonces se manda a imprimir en memoria.
Se ejecuta la línea 12 y entonces se manda a imprimir el valor de la variable de argumento.
Pero como podemos comprobar en memoria, no se realizó ninguna modificación sobre este valor.
Así que el valor final de esta variable es el valor de diez.
Y básicamente ese es el concepto de paso por valor.
Cualquier tipo de dato primitivo, como los que ya hemos comentado, funciona exactamente de la misma
manera.
Vamos a detener hasta aquí y ahora.
En el siguiente vídeo vamos a ver cómo trabajar con referencias de memoria, utilizando precisamente
el concepto de apuntadores, pero también aplicándolo a funciones.
Bien, eso es todo por este vídeo y continuamos en el siguiente.
Saludos.