Sei sulla pagina 1di 34

MEMORIA DINÁMICA Y

PUNTEROS
¿Qué es un puntero?
•En términos generales, podemos referirnos como apuntador, puntero o pointer a una variable
que almacene una dirección de memoria.
•El puntero nos permitirá guardar la dirección de memoria donde se localiza alguna otra
variable o constante.
•La manipulación de los datos que se encuentran en la memoria es la principal razón de los
apuntadores.
Direcciones de Memoria
Para entender el manejo de la memoria dinámica y el uso de punteros es necesario abstraer la
definición de su composición. Entonces es conveniente imaginarnos la memoria como un
conjunto de celdas. Si tenemos una dirección de memoria esta, se está refiriendo a una celda en
cuestión.
Declaración de un puntero
<Tipo de variable que apuntará> * <nombre del puntero>;
Declaración de un puntero

 “p” es una variable


 “p” es una variable puntero
 “p” es una variable puntero a una variable de tipo caracter
Asignación de una variable
Asignación de una variable
•Para la asignación de la dirección de la variable “a”, a la variable puntero “p”, es necesario
obtener el valor de la dirección actual de “a”, para esto se usa el operador & (ampersand).
•& debe preceder al nombre de la variable de la cual se quiere obtener su dirección.
Imprimir valores
Valor NULL a la variable puntero
Valor NULL a la variable puntero
Valor NULL a la variable puntero
Aritmética de Punteros
Es posible sumar o restar valores a un puntero, siempre y cuando estos apunten a elementos de
un mismo array.
Punteros y Arreglos
El identificador de un arreglo es un puntero al primer elemento del arreglo
Punteros y Arreglos
Punteros a Estructuras
Obtener el elemento de una estructura
a partir de un arreglo
Obtener el elemento de una estructura a partir de un arreglo:

(*nombre_puntero).elemento

◦ Su equivalente
Punteros a Estructuras
RAM
Memoria RAM
Memoria RAM
Memoria RAM
Stack
El operador new
El operador new sirve para reservar memoria dinámica, por medio de una variable puntero al
tipo de dato para el cual queremos reservar memoria.
El operador delete
El operador delete se usa para liberar la memoria dinámica reservada con new.
Heap
Usando el operador por referencia
int a;
int &r = a;

◦ &r - es una variable por referencia, que contiene


la dirección de “a” entonces r contiene el valor de la dirección de a
Parámetros por valor y por referencia
Parámetros por valor y por referencia
Parámetros por valor y por referencia
Parámetros por valor y por referencia
Pasando estructuras por referencia
De la misma forma que se pasan
variables simples como parámetros a
las funciones, es posible pasar
variables más complejas, es decir,
estructuras.
Ventajas de usar punteros
•Crean código eficiente y rápido
•Proporcionan asignación de memoria dinámica
•Hacen expresiones compactas y concisas
•Proporcionan la capacidad de pasar estructuras de datos mediante
un puntero sin ocasionar un exceso de código conocido como
“overhead”

Potrebbero piacerti anche