Punteros

Una variable de tipo puntero contiene la dirección de un objeto de datos o una función. Un puntero puede hacer referencia a un objeto de cualquier tipo de datos; no puede hacer referencia a un campo de bits ni a una referencia.

Algunos usos comunes para punteros son:
  • Para acceder a estructuras de datos dinámicas como, por ejemplo, listas enlazadas, árboles y colas.
  • Para acceder a elementos de una matriz o miembros de una estructura o clase C++.
  • Para acceder a una matriz de caracteres como una serie.
  • Para pasar la dirección de una variable a una función. (En C++, también puede utilizar una referencia para hacerlo.) Al hacer referencia a una variable a través de su dirección, una función puede cambiar el contenido de esa variable.

Tenga en cuenta que la ubicación de los calificadores de tipo volatile y const afecta a la semántica de una declaración de puntero. Si alguno de los calificadores aparece antes de *, el declarador describe un puntero a un objeto calificado de tipo. Si alguno de los calificadores aparece entre el * y el identificador, el declarador describe un puntero de tipo calificado.

La tabla siguiente proporciona ejemplos de declaraciones de puntero.
Tabla 1. Declaraciones de puntero
Declaración Descripción
long *pcoat; pcoat es un puntero a un objeto que tiene el tipo long
extern short * const pvolt; pvolt es un puntero constante a un objeto que tiene el tipo short
extern int volatile *pnut; pnut es un puntero a un objeto int que tiene el calificador volatile
float * volatile psoup; psoup es un puntero de volatile a un objeto que tiene el tipo float
enum bird *pfowl; pfowl es un puntero a un objeto de enumeración de tipo bird
char (*pvish)(void); pvish es un puntero a una función que no toma ningún parámetro y devuelve un char
"" nullptr_t pnull; pnull es un puntero nulo que no apunta a ningún objeto o función válidos.