Arrays en C++: Declaración, inicialización y técnicas con punteros
¿Qué es un array?
En C++, un array es un bloque de memoria contiguo de tamaño fijo que almacena elementos del mismo tipo de datos. Piense en él como una única variable que representa una colección de valores, cada uno accesible mediante un índice que comienza en 0.
Los arrays simplifican el manejo de datos al agrupar valores relacionados, permitiendo recorrido eficiente, acceso aleatorio y operaciones en lote.
¿Por qué usar arrays?
Los arrays ofrecen:
- Representación compacta de datos homogéneos.
- Acceso por índice en tiempo constante (
O(1)). - Ajuste natural para algoritmos que requieren procesamiento secuencial o tipo matriz.
Declaración de un array
Sintaxis:
tipo nombreArray[tamañoArray];
- tipo: Tipo de dato válido en C++ (ej.
int,double,char). - nombreArray: Identificador del array.
- tamañoArray: Entero positivo que especifica la cantidad de elementos.
Ejemplo: int edad[5]; crea espacio para cinco enteros.
Inicialización de un array
Los valores pueden establecerse en la declaración o después:
int edad[5] = {19, 18, 21, 20, 17};
Omitir tamañoArray permite que el compilador infiera el tamaño:
int edad[] = {19, 18, 21, 20, 17};
Los elementos individuales pueden asignarse por índice:
edad[3] = 20; // 4º elemento
Tipos de arrays
- Unidimensional (1D)
- Multidimensional (2D, 3D, …)
- Punteros a arrays
Array unidimensional
Almacenamiento lineal estándar:
int edad[5] = {19, 18, 21, 20, 17};
Ejemplo de recorrido:
#include <iostream>
using namespace std;
int main() {
int edad[5] = {19, 18, 21, 20, 17};
for (int i = 0; i < 5; ++i) {
cout << edad[i] << "\n";
}
return 0;
}
Salida:

Array bidimensional (Matriz)
Sintaxis: tipo nombreArray[filas][columnas];
int matriz[2][3] = {{0, 2, 1}, {4, 3, 7}};
Patrón de acceso: matriz[fila][columna]. Recorrido:
#include <iostream>
using namespace std;
int main() {
int a[3][2] = {{0, 2}, {1, 4}, {3, 7}};
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 2; ++j) {
cout << "a[" << i <<"] [" << j <<"] = " << a[i][j] << endl;
}
}
return 0;
}
Salida:

Array tridimensional
Ilustra un cubo de datos:
#include <iostream>
using namespace std;
int main() {
int a[2][3][2] = { {{4, 8}, {2, 4}, {1, 6}}, {{3, 6}, {5, 4}, {9, 3}} };
cout << "a[0][1][0] = " << a[0][1][0] << "\n";
cout << "a[0][1][1] = " << a[0][1][1] << "\n";
return 0;
}
Salida:

Puntero a un array
El nombre de un array decae a un puntero a su primer elemento. Ejemplo:
#include <iostream>
using namespace std;
int main() {
int edad[5] = {19, 18, 21, 20, 17};
int *p = edad; // p apunta a edad[0]
cout << "Dirección: " << p << "\n";
cout << "Primer valor: " << *p << "\n";
return 0;
}
Acceso mediante aritmética de punteros:
for (int i = 0; i < 5; ++i) {
cout << "*(p + " << i <<") = " << *(p + i) << endl;
}
Acceso a elementos
Use el operador de índice [ ]:
int juan = edad[2]; // tercer elemento
Ejemplo completo:
#include <iostream>
using namespace std;
int main() {
int edad[5] = {19, 18, 21, 20, 17};
int juan = edad[2];
cout << "La edad de Juan es: " << juan;
return 0;
}
Ventajas de los arrays en C++
- Recorrido secuencial rápido.
- Acceso aleatorio O(1).
- Baja sobrecarga de memoria —no se necesita asignación dinámica.
- Facilita optimizaciones algorítmicas (ej. bucles cache-friendly).
- Soporte integrado en el lenguaje y la biblioteca estándar.
Desventajas de los arrays en C++
- Tamaño fijo —no se puede redimensionar tras la declaración.
- Riesgo de errores fuera de límites si los índices se gestionan mal.
- Desperdicio de memoria si el tamaño declarado supera el uso real.
- Sin comprobación de límites en arrays estándar (use
std::arrayostd::vectorpara seguridad).
Resumen
- Un array es un bloque contiguo de memoria que almacena elementos de un tipo.
- Los índices comienzan en 0; el último índice es
tamaño-1. - Declare con
tipo nombre[tamaño];e inicialice con{ }o individualmente. - Los arrays 1D almacenan valores linealmente; 2D y 3D modelan matrices y tensores.
- Los punteros a arrays proporcionan indexación flexible y acceso aritmético.
- Elija arrays cuando el tamaño es conocido y el rendimiento es crítico; de lo contrario prefiera
std::vectorostd::array.
Lenguaje C
- Dominando arrays en C#: Declaración, inicialización y operaciones
- Cómo Pasar Arrays a Funciones en C++: Guía Práctica
- Bucle do‑while en C++: Sintaxis, ejemplos prácticos y bucles anidados
- Asignación dinámica de arrays en C++: Guía práctica con ejemplos de código
- Dominando punteros en C++: Conceptos, ejemplos y aplicaciones prácticas
- Dominando el tipo de dato char en C++: Declaración, ASCII y técnicas de conversión
- Sobrecarga de operadores en C++: Guía práctica con ejemplos de código
- Funciones en C++ Explicadas con Ejemplos de Código Prácticos
- Dominando Colecciones en C#: Tutorial Práctico con Ejemplos del Mundo Real
- Técnicas de Copia de Arrays en Java: Guía Completa
- Tutorial de arrays en Java: Declaración, creación e inicialización – Código de ejemplo