Introducción:
Una variable es el nombre con el que se va a referenciar/identificar un dato particular.Ahora bien, ¿qué tiene que ver una variable con una dirección de memoria?Precisamente las variables, o mejor dicho su contenido, se alojan/guardan en direcciones de memoria, en memoria.En C y C++, para decir que necesitas la dirección de memoria de una variable se le agrega el & delante de la variable.
Indice del Curso
Se ha realizado este curso con la idea que contenga 7 unidades y este anexo hasta el momento, eso no quiere decir que se vaya anexando otros temas en el futuro.El mismo va tener el siguiente temario.Haz clic en los enlaces de los temas.
- Variables y Tipos de Datos
- Estructuras de Control
- Manejo de Vectores
- Principio Modular:Concepto de Acciones y Funciones
- ¿Que son los Structs?
- Manejo de Archivos
- Listas
Anexo
- Direcciones de Memoria y Punteros (Usted esta aquí.Este tema se va tratar en este curso)
Ahora bien en un ejemplo esto sería…
y en la ejecución de código se vería:
Ese 0x28ff0c, es la dirección de memoria. Es el lugar físico dentro de la memoria heap, donde está alojado el número 5. Pero les muestro un gráfico para que se hagan una idea:
¿De qué nos sirve saber esto?
Primero, es necesario para cosas particulares, más que nada para funciones que necesitan que le pasemos la dirección de memoria de la variable y no su valor.
Segundo, listas enlazadas en la Unidad 7, maneja mucho direcciones de memoria y punteros, porque, las listas, son estructuras de datos que están en memoria y se enlazan entre ellas con punteros.
¿Que significa que una variable sea un de tipo puntero? Significa que no es una variable normal, que contiene un int, char, bool,etc, sino que contiene la dirección de memoria donde está alojado la variable int, char, bool.
Por eso puntero, porque apunta a la dirección de memoria. Vean como se definen y que contienen:
Vean un dato muy importante. Cuando se trata un char, colocar char* es lo mismo que declarar un vector/array de char (o string). Fijense como me permite, en la línea 8, asignarle el string “Hola”, y me lo imprime. Asi que, ese es un caso aparte. Para saber su dirección de memoria, tendríamos que declarar una variable que apunte a la dirección de memoria de dónde apunta el puntero Char. Vean:
Pero no se alarme, se maneja como una variable común. Se tiene que pasar por parametro para que se modifique su valor:
Fijense que le cambiamos la dirección a donde apunta el puntero *p de este modo.
Conclusion:
Para obtener la dirección de memoria de una variable, se usa el operador de dirección (&) seguido del nombre de la variable.
- Los punteros pueden volverse inválidos si no apuntan a una memoria válida, exceden los límites de la matriz, o no son NULL.
- Los punteros nulos no tienen un tipo de datos específico y se les puede asignar el valor NULL.
- Se pueden inicializar punteros con la dirección de otra variable preexistente, o de una zona libre en el heap.
- Para pedir al operativo una zona libre de memoria del tamaño necesario, se puede utilizar la función malloc().
- Los punteros se pueden usar para almacenar las direcciones de otras variables o elementos de memoria.
- Los punteros son herramientas muy capaces, pero deben usarse con responsabilidad ya que son una de las partes más vulnerables del lenguaje
Navega entre los temas de este curso!
<<Ir al Tema #7 | Ir al Tema #1>>
- Tutorial
- Programación