Hola y bienvenido a esta elección.
A continuación vamos a ver cómo mandar a imprimir la dirección de memoria de una variable.
Están listos?
Vamos.
Bien.
Según hemos comentado, una variable también tiene una dirección de memoria asociada.
Así que vamos a ver cómo mandar a imprimir esta dirección de memoria asociada a esta variable.
Por ejemplo, si tenemos una variable llamada mi número y le hemos asignado el valor de diez en memoria,
se crea lo siguiente Se reserva espacio de memoria en alguna de las celdas de nuestra memoria RAM.
Recordemos que esta parte de la memoria donde se crean las variables se conoce como memoria stack.
Así que en alguna parte de nuestra memoria se reserva espacio de memoria para esta variable.
Por ejemplo, en este caso en la dirección de memoria 0X333, que es un valor hexadecimal, es donde
de manera aleatoria se almacena el valor de esta variable.
Mi número el valor de diez.
Sin embargo, si tenemos n cantidad de memoria en nuestra memoria RAM, tanta como tengamos instalada
en nuestro dispositivo.
Ahora, para poder obtener esta dirección de memoria y poder mandarla a imprimir para que sepamos cuál
fue la dirección de memoria asignada a esta variable, en lugar de utilizar simplemente nuestra variable,
tenemos que agregar al principio un ampersand.
Vamos a realizar un ejercicio para poner en práctica esto, pero básicamente con el ampersand.
Al inicio de nuestra variable le estamos indicando al lenguaje que en lugar de recuperar este valor
de texto, al indicar el ampersand antes de nuestra variable, le estamos indicando que queremos recuperar
el valor de la dirección de memoria, el cual es un valor hexadecimal, ya que normalmente así es como
se manejan las direcciones de memoria en la memoria RAM.
Ahora, si queremos mandar a imprimir, por ejemplo esta dirección de memoria, entonces tenemos que
hacer lo siguiente Vamos a mandar a imprimir nuestra dirección de memoria utilizando el ampersand,
según hemos comentado en nuestra variable.
Pero además también tenemos algo nuevo el especificado de formato porcentaje P.
Esta p significa painter o apuntador, así que básicamente lo que significa es que estamos apuntando
a esta dirección de memoria.
Por lo tanto, esta variable apunta a la dirección de memoria 0X333 y su valor es el valor de diez.
Pero si queremos mandar a imprimir la dirección de memoria, entonces en lugar de porcentaje indicamos
porcentaje P Para recuperar precisamente la dirección de memoria a la cual está apuntando esta variable.
Por ello, ese es el concepto básico del manejo de apuntadores en el lenguaje.
C Simplemente es recuperar la dirección de memoria a la cual está apuntando cierta variable.
Y entonces, en resumen, tenemos lo siguiente Al momento de utilizar ampersand antes de nuestra variable
como prefijo, estamos recuperando la dirección de memoria y por lo tanto se mandaría a imprimir 0X33A
la consola.
Y por otro lado, el especificado de formato porcentaje P.
Básicamente, como hemos comentado, es el especificado de formato para mandar a imprimir la dirección
de memoria o también lo que se conoce como apuntador en el lenguaje c.
De ahí el concepto de P, ya que es pointer en inglés o apuntador en español es el concepto básico de
manejo de memoria.
Vamos a crear a continuación nuestro ejercicio precisamente para manejar este concepto y obtener la
dirección de memoria.
Según hemos comentado.
Así que vamos a obtener la dirección de memoria en C o también el concepto básico de apuntadores.
De momento no vamos a utilizar esta librería STD TDT.
Podemos quitarlo.
Y también vamos a quitar todos este código.
Ya no vamos a utilizarlo.
Vamos a hacer un código más simple.
En este momento, solamente vamos a declarar una variable.
Declaramos nuestra variable llamada mi número.
Le asignamos cualquier valor, por ejemplo, el valor de diez.
Y básicamente con esto en memoria se está creando esta variable y además está reservando espacio de
memoria, según hemos comentado.
Ahora vamos a hacer dos cosas vamos a mandar a imprimir en primer lugar el valor de esta variable,
como ya sabemos, imprimir el valor de la variable.
Esto ya no debe de tener ningún problema.
Utilizamos el especificados de formato porcentaje D y utilizamos nuestra variable la variable mi número.
Si ejecutamos hasta aquí no hay nada nuevo.
Solamente se imprime el valor de nuestra variable, el valor de diez.
Pero ahora vamos a mandar a imprimir la dirección de memoria.
Imprimimos.
La dirección donde está almacenada, no nuestra variable de mi número.
Por lo tanto, vamos a ver dónde está apuntando esta variable en memoria.
Para ello volvemos a utilizar nuestro formato printf.
Utilizamos una cadena, un salto de línea y ahora vamos a mandar a imprimir la dirección de memoria
a la cual está apuntando nuestra variable.
Utilizamos el especificados de formato porcentaje P para saber a dónde apunta esta variable y posteriormente
indicamos ampersand antes de nuestra variable para recuperar precisamente la dirección de memoria a
la cual está apuntando esta variable, vamos a ejecutar y podemos observar que la variable que contiene
el valor de diez está apuntando a la dirección de memoria cero cero 61 ff uno C.
Esta es una dirección de memoria en código hexadecimal.
Normalmente este va a ser el sistema de numeración que se va a utilizar para el manejo de la memoria,
el código hexadecimal.
Y también lo interesante es que si volvemos a ejecutar nuestro código, esta dirección de memoria,
lo normal es que cambie.
No necesariamente tiene que cambiar, pero lo normal es que cambie, ya que recordemos que la memoria
RAM es una memoria volátil.
Por lo tanto, cada vez que volvemos a ejecutar nuestro programa se pierde toda la información anterior
y se vuelven a crear nuestras variables en memoria.
Así que si volvemos a ejecutar en este caso, la dirección de memoria es la misma.
Pero esto no tiene que ser necesariamente así.
Como hemos comentado, podrían recrearse estas variables en diferentes posiciones de memoria, ya que
esta es la memoria RAM, una memoria volátil, así que no necesariamente se van a volver a utilizar
las mismas direcciones de memoria.
Y ese es el concepto básico de apuntadores.
Así es como vamos a obtener la dirección de memoria donde se encuentra almacenada una variable, y ese
tema también es bastante importante.
Más adelante vamos a ver a más detalle el concepto de apuntadores.
Con esto solamente estamos obteniendo la dirección de memoria a la cual está apuntando una variable
y esto nos va a servir en ejercicios posteriores.
Por ejemplo, para poder almacenar información que proporciona el usuario en una variable.
Así que para ello vamos a tener que especificar la dirección de memoria donde se encuentra una variable
y entonces de esta forma va a ser más sencillo poder almacenar información que proporcione el usuario
de manera dinámica y almacenarlo en alguna variable.
Pero esto lo vamos a ver en ejercicios posteriores.
Pongan en práctica lo que hemos visto y continuamos en la siguiente lección.
Saludos.