Punteros

El tipo T* es el tipo de los punteros a T.

Un puntero a T representa una dirección (address) de memoria en la que hay almacenado un valor de tipo T.

// Puntero a int
int*

// Puntero a vector de int
vector<int>*

// Vector de punteros a int
vector<int*>

// Puntero a puntero de ints
int**

Operaciones con punteros

Keyword NULL

Históricamente la dirección de memoria 0 está reservada para representar un puntero que no referencia a ninguna posición de memoria.

En C++ podemos escribir NULL para indicar que un puntero tiene la dirección 0. Esto es meramente un reemplazo sintáctico.

Keyword nullptr

A partir de C++ 11 se incorporó el keyword nullptr en reemplazo de NULL. Esto refiere al tipo de dato nullptr_t que sirve para representar punteros nulos.

Regiones de Memoria

La memoria en C++ se divide en tres regiones:

Nombre En el... Se administra... Descripción
Global (Estática) Ejecutable Desde el ejecutable Las variables estáticas existen durante todo el programa. Definiciones por fuera de las funciones o {}.
Local (Automática) Stack Automáticamente Las variables locales y los parámetros se almacenan en el stack. El tiempo de vida de las variables está dado por su scope.
Dinámica Heap Manualmente C++ provee dos operaciones para administrar la memoria dinámica:

Problemas con Punteros