Hola y bienvenidos.
Vamos a ver a continuación el tema de apuntadores en el lenguaje C.
Están listos?
Vamos.
Bien, este es uno de los temas fundamentales en el lenguaje C, así que va a ser muy importante poner
toda la atención posible para que este concepto quede completamente claro.
Bien, entonces vamos a ver el tema de cómo vamos a copiar las referencias de memoria, es decir, el
manejo de apuntadores.
Ya hemos visto anteriormente que podemos definir una variable, por ejemplo, en este caso estamos definiendo
la variable A y le estamos asignando el valor de diez.
Así que ya sabemos que se reserva un espacio de memoria para poder almacenar este valor de diez y posteriormente
lo que vamos a hacer es definir una variable, pero en lugar de que almacene directamente el valor de
la variable a, lo que va a hacer es almacenar el valor de la referencia donde se encuentra la variable
a.
Para ello tenemos que utilizar la siguiente sintaxis Tenemos que utilizar exactamente el mismo tipo
de dato de la variable de la cual queremos almacenar su referencia de memoria.
Entonces, en este caso, si la variable A es de tipo entero, entonces también la variable apuntador
que vamos a definir debe de ser de tipo entero.
Este asterisco lo podemos cargar tanto del lado del tipo de dato o lo podemos cargar del lado de la
variable.
Yo de momento estoy dejando un espacio entre el tipo de dato y el nombre de la variable, así que en
este caso estoy cargando este asterisco del lado de la variable, pero aquí debe de haber un espacio.
Y posteriormente para que esta variable almacene la referencia de memoria de la variable A, entonces
recordemos que tenemos la sintaxis de ampersand y posteriormente la variable A.
Recordemos que esto regresa a la dirección de memoria donde está almacenada la variable A, y esto lo
hemos utilizado por ejemplo en la función es NF cuando hemos trabajado con los tipos primitivos, por
ejemplo un tipo entero, un tipo flotante, etcétera Cuando queremos almacenar la información en esta
variable, entonces indicamos la dirección de memoria para que se almacene correctamente el valor proporcionado
por el usuario.
Así que es exactamente la misma sintaxis.
Esto regresa a la dirección de memoria y entonces esta variable se conoce como apuntador.
Esta es la sintaxis de apuntador y entonces tiene que tener el mismo tipo de dato de la variable a la
cual está apuntando.
Ahora, esto en memoria se ve de la siguiente manera En primer lugar se define la variable A y tenemos
el valor de then almacenado en cierta dirección de memoria.
Así que la variable A en este momento esta almacenado en la dirección de memoria 0X333.
Y el valor que almacena esta dirección de memoria es el valor de días.
Así es como se tiene que leer esta información.
Ahora, por otro lado, estamos definiendo una variable llamada apuntador.
Entonces es asterisco V no solamente es la variable b, sino es asterisco v.
Esto significa que va a ser una variable que apunta a la misma dirección de memoria donde se encuentra
la variable b.
Así que la variable b almacena directamente la dirección de memoria que estamos proporcionando.
Así que en este caso, esta es la dirección de memoria 0X333 y entonces la variable b almacena.
Esta dirección de memoria no almacena directamente este valor, sino que almacena directamente la dirección
de memoria.
Por ello, a esta variable se le conoce como apuntador, ya que precisamente está apuntando a una dirección
de memoria, en este caso de la variable que le hemos proporcionado la variable a, Así que la variable
b es un apuntador hacia la variable a y por lo tanto esta es la sintaxis para definir un apuntador.
Ahora, si queremos acceder al valor a través de este apuntador, si es posible, en primer lugar vamos
a mandar a imprimir el valor almacenado en la variable A, Así que si mandamos a imprimir directamente
el valor de la variable a, imprime el valor de diez.
Pero si ahora queremos utilizar la variable de apuntador para acceder al valor de la memoria donde está
apuntando, entonces tenemos que utilizar la siguiente sintaxis Es muy similar Vamos a mandar a imprimir
un valor de tipo entero, pero en lugar de poner directamente el nombre de la variable, tenemos que
poner asterisco V.
De esta manera, entonces lo que va a imprimir es exactamente el mismo valor el valor de diez.
A esta sintaxis se le conoce como des referencia, así que lo que estamos haciendo es referenciar a
nuestra dirección de memoria en primer lugar y posteriormente, una vez que ya estamos posicionados
en la dirección de memoria con el asterisco, lo que sucede es que accedemos al valor almacenado en
la casilla a la cual estamos apuntando.
Así que eso es lo que hace el asterisco.
Se conoce como referenciar para obtener precisamente el valor, en este caso de la casilla a la cual
estamos apuntando.
Por ello es que con esta sintaxis se manda a imprimir el mismo valor, ya sea utilizando la variable
a o asterisco b, se imprime el valor de Díaz, pero también se podría imprimir directamente la dirección
de memoria.
Así que si mandamos a imprimir directamente la variable B, recordemos que para mandar a imprimir una
dirección de memoria, en lugar de utilizar un especificado de formato de tipo decimal, vamos a indicar
el especificados de formato P.
Recordemos que p significa pointer en inglés.
Es decir, precisamente un apuntador.
Y entonces con esto lo que vamos a mandar a imprimir es el valor almacenado por la variable b.
Pero recordemos que la variable b realmente lo que almacena es una dirección de memoria.
Por lo tanto, aquí lo que se va a imprimir es la dirección de memoria 0X333.
Por ello, para que se imprima correctamente este valor, tenemos que indicar el especificados de formato
P para que se imprima la dirección de memoria a la cual está apuntando la variable B y por lo tanto
esta es la sintaxis básica para el manejo de apuntadores.
Ahora, qué pasa si queremos modificar el valor de diez?
Tenemos dos opciones podemos utilizar directamente la variable A como ya sabemos o en este caso podemos
utilizar la sintaxis de asterisco B para acceder directamente al valor y modificarlo.
Así que para modificar el valor de la variable a la cual estamos apuntando, utilizamos el concepto
de referencia.
Entonces ponemos asterisco B y entonces esto significa que vamos a modificar el valor, no la dirección
de memoria, sino directamente el valor.
Ahora, en lugar de tener el valor de diez, se sobrescribe este valor en memoria y podemos observar
que ahora la casilla almacena el valor de 20.
Así que en este caso tanto la variable a o la variable asterisco b, que es el apuntador, ya van a
ver exactamente la misma información y entonces con esta sintaxis modificamos el valor de la dirección
de memoria a la cual estamos apuntando, así que estamos modificando directamente el valor y por lo
tanto ya vamos a poder acceder a este valor, ya sea utilizando la variable a o la variable apuntador
con la sintaxis de referencia.
Pero aquí debemos tener mucho cuidado, ya que si utilizamos directamente la variable b y le asignamos
un valor, entonces lo que estamos modificando es la dirección de memoria a la cual apunta.
Esta variable.
Así que si le asignamos, por ejemplo el valor de 20, entonces ahora la variable b va a apuntar a una
dirección de memoria donde tengamos la dirección de memoria con el valor de 20.
Obviamente, esto puede provocar problemas y debemos tener mucho cuidado para no acceder a direcciones
de memoria que esté prohibido o que no debamos estar modificando.
Y por ello tenemos que recordar esta sintaxis.
Es muy importante saber que si queremos modificar el valor de la dirección de memoria a la cual apuntamos,
entonces tenemos que utilizar la sintaxis de apuntadores asterisco V, es decir, el concepto de referencia.
Y por último, podemos comprobar que si mandamos a imprimir el valor de la variable a directamente,
ahora se imprime el valor de 20.
Y si utilizamos también la sintaxis del apuntador utilizándola de referencia, entonces se van a imprimir
exactamente el mismo valor.
El valor de twenty, ya que estamos accediendo al valor apuntado por esta dirección de memoria y básicamente
este concepto de apuntadores, vamos a tener hasta aquí y en el siguiente vídeo vamos a realizar este
ejemplo.
Así que continuamos.
Saludos.