Matrices en C++Declarar, inicializar y usar punteros (ejemplos)
โก Resumen inteligente
Una matriz en C++ Un array es una colecciรณn de elementos del mismo tipo de datos almacenados en ubicaciones de memoria contiguas. Aquรญ aprenderรกs a declarar, inicializar y acceder a arrays, los tipos de arrays y sus ventajas y desventajas.

ยฟQuรฉ es una matriz?
Una matriz es una estructura de datos que almacena un elemento del mismo tipo de datos de forma secuencial. A C++ La matriz tiene un tamaรฑo fijo.
Puede ver una matriz como una colecciรณn de variables de un tipo de datos similar. En lugar de declarar cada variable y asignarle un valor individualmente, puede declarar una variable (la matriz) y agregarle los valores de las distintas variables. Cada valor agregado a la matriz se identifica mediante un รญndice.
ยฟPor quรฉ necesitamos arreglos?
Matrices Son muy importantes en cualquier lenguaje de programaciรณn. Proporcionan una forma mรกs conveniente de almacenar variables o una colecciรณn de datos de un tipo de datos similar juntos en lugar de almacenarlos por separado. Se accederรก a cada valor de la matriz por separado.
Declarar una matriz en C++
Declaraciรณn de matriz en C++ Implica indicar el tipo y el nรบmero de elementos que almacenarรก la matriz. Sintaxis:
type array-Name [ array-Size ];
Reglas para declarar una matriz unidimensional en C++.
- Tipo: El tipo es el tipo de elementos que se almacenarรกn en la matriz y debe ser vรกlido. C++ tipo de datos
- Nombre de matriz: El nombre de la matriz es el nombre que se asignarรก a la matriz.
- Tamaรฑo de matriz: El tamaรฑo de la matriz es la cantidad de elementos que se almacenarรกn en la matriz. Debe ser un nรบmero entero y mayor que 0.
Por ejemplo, puedes crear una matriz llamada edad y almacenar las edades de 5 estudiantes de la siguiente manera:
int age[5];
La edad de la matriz almacenarรก 5 nรบmeros enteros que representan las edades de diferentes estudiantes.
Inicializaciรณn de matriz
La inicializaciรณn de una matriz es el proceso de asignar/almacenar elementos a una matriz. La inicializaciรณn se puede realizar en una sola declaraciรณn o una por una. Tenga en cuenta que el primer elemento de una matriz se almacena en el รญndice 0, mientras que el รบltimo elemento se almacena en el รญndice n-1, donde n es el nรบmero total de elementos de la matriz.
En el caso de la matriz de edad, el primer elemento se almacenarรก en el รญndice 0, mientras que el รบltimo elemento se almacenarรก en el รญndice 4.
Usemos la matriz de edad para demostrar cรณmo se puede realizar la inicializaciรณn de la matriz:
int age[5] = {19, 18, 21, 20, 17};
El nรบmero total de elementos dentro de { } no puede exceder el valor indicado dentro de [ ]. El elemento 19 estรก en el รญndice 0, 18 en el รญndice 1, 21 en el รญndice 2, 20 en el รญndice 3 y 17 en el รญndice 4. Si no indica el nรบmero de elementos que se almacenarรกn en la matriz dentro de [], la matriz sรณlo serรก lo suficientemente grande para contener los elementos agregados dentro de {}. Por ejemplo:
int age[] = {19, 18, 21, 20, 17};
La declaraciรณn anterior crearรก exactamente la misma matriz que la anterior. Tambiรฉn puedes asignar un elemento a una matriz usando su รญndice. Por ejemplo:
age[3] = 20;
La declaraciรณn anterior almacenarรก el valor 20 en el รญndice 3 de la matriz denominada edad. Esto significa que 20 serรกn los 4.th elemento de la matriz.
Tipos de matrices
Existen dos tipos de C++ matrices:
- Matriz unidimensional
- Matriz multidimensional
- Puntero a una matriz
Matriz unidimensional
Se trata de una matriz en la que los elementos de datos estรกn dispuestos linealmente en una sola dimensiรณn. Comรบnmente se le llama matriz 1-D. Sintaxis:
datatype array-name[size];
- El nombre de la matriz es el nombre de la matriz.
- El tamaรฑo es la cantidad de elementos que se almacenarรกn en la matriz.
Por ejemplo:
#include <iostream> using namespace std; int main() { int age[5] = { 19, 18, 21, 20, 17 }; for (int x = 0; x < 5; x++) { cout <<age[x]<<"\n"; } }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluyendo el archivo de encabezado iostream en nuestro cรณdigo. Nos permitirรก leer y escribir en la consola.
- Incluyendo el espacio de nombres estรกndar para usar sus clases y funciones sin llamarlo.
- Llamar a la funciรณn main() dentro de la cual se debe agregar la lรณgica del programa.
- Inicio del cuerpo de la funciรณn main().
- Declarar una matriz llamada edad para almacenar 5 nรบmeros enteros. Tambiรฉn se han inicializado los 5 nรบmeros enteros.
- Cree una variable entera x usando un bucle for.
- El comienzo del cuerpo del bucle for.
- Usar la variable de bucle x para iterar sobre los valores de la edad de la matriz e imprimirlos en la consola. "\n" es un carรกcter de nueva lรญnea y se imprime en una nueva lรญnea despuรฉs de cada iteraciรณn.
- Fin del cuerpo del en bucle.
- Fin del cuerpo de la funciรณn main().
Matriz multidimensional
Se trata de una matriz en la que los elementos de datos se organizan para formar una matriz de matrices. Una matriz multidimensional puede tener cualquier nรบmero de dimensiones, pero las matrices bidimensionales y tridimensionales son comunes. Sintaxis:
datatype array-name[d1][d2][d3]...[dn];
El nombre de la matriz es el nombre de la matriz que tendrรก n dimensiones. Por ejemplo:
Matriz bidimensional
Una matriz 2D almacena datos en una lista con una matriz 1D. Es una matriz con filas y columnas. Para declarar una matriz 2D, utilice la siguiente sintaxis:
type array-Name [ x ][ y ];
El tipo debe ser vรกlido. C++ tipo de datos. Vea una matriz 2D como una tabla, donde x denota el nรบmero de filas mientras que y denota el nรบmero de columnas. Esto significa que identifica cada elemento en una matriz 2D usando la forma a[x][y], donde x es el nรบmero de filas e y el nรบmero de columnas a las que pertenece el elemento.
A continuaciรณn se muestra un ejemplo de cรณmo inicializar una matriz 2D:
int a[2][3] = {
{0, 2, 1} , /* row at index 0 */
{4, 3, 7} , /* row at index 1 */
};
En el ejemplo anterior, tenemos una matriz 2D que puede verse como una matriz de 2ร3. Hay 2 filas y 3 columnas. Se puede acceder al elemento 0 como [0] [1] porque estรก ubicado en la intersecciรณn de la fila indexada 0 y la columna indexada 1. Se puede acceder al elemento 3 como [1] [2] porque estรก ubicado en la intersecciรณn de la fila indexada 1 y la columna indexada 2.
Tenga en cuenta que simplemente agregamos llaves para diferenciar las diferentes filas de elementos. La inicializaciรณn tambiรฉn se podrรญa haber realizado de la siguiente manera:
int a[2][3] = {0, 2, 1, 4, 3, 7};
};
Las siguientes C++ El ejemplo demuestra cรณmo inicializar y recorrer una matriz 2D:
#include <iostream> using namespace std; int main() { // a 2x3 array int a[3][2] = { {0, 2}, {1, 4}, {3, 7} }; // traverse array elements for (int i=0; i<3; i++) for (int j=0; j<2; j++) { cout << "a[" <<i<< "][" <<j<< "]: "; cout << a[i][j] << endl; } return 0; }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo anterior:
Code Explicaciรณn:
- Incluyendo el archivo de encabezado iostream en nuestro cรณdigo. Nos permitirรก leer y escribir en la consola.
- Incluyendo el espacio de nombres estรกndar para usar sus clases y funciones sin llamarlo.
- Llamar a la funciรณn main() dentro de la cual se debe agregar el cรณdigo.
- Inicio del cuerpo de la funciรณn main().
- Un comentario. El C++ El compilador omitirรก esto.
- Declarando una matriz 2D de 3 filas y 2 columnas. Tambiรฉn se han agregado elementos a la matriz.
- Un comentario. El C++ El compilador omitirรก esto.
- Creando una variable usando un bucle for. Esta variable iterarรก sobre los รญndices de fila de la matriz.
- Creando una variable j usando un bucle for. Esta variable iterarรก sobre los รญndices de las columnas de la matriz.
- Inicio del cuerpo de los bucles.
- Imprima los valores de las variables i y j en la consola dentro de corchetes en la consola.
- Imprima el valor almacenado en el รญndice [i][j] de la matriz a.
- Fin del cuerpo de los bucles.
- La funciรณn main() deberรญa devolver un valor entero si el programa funciona bien.
- Fin del cuerpo de la funciรณn main().
Matriz tridimensional
Una matriz 3D es una matriz de matrices. Cada elemento de una matriz 3D se identifica mediante un conjunto de 3 รญndices. Para acceder a los elementos de una matriz 3D, utilizamos tres bucles for. Por ejemplo:
#include<iostream> using namespace std; void 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"; }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluyendo el archivo de encabezado iostream en nuestro cรณdigo. Nos permitirรก leer y escribir en la consola.
- Incluyendo el espacio de nombres estรกndar para usar sus clases y funciones sin llamarlo.
- Llamar a la funciรณn main() dentro de la cual se debe agregar la lรณgica del programa.
- Inicio del cuerpo de la funciรณn main().
- Declarar una matriz 3D denominada de tamaรฑo 2x3x2. Los valores de la matriz tambiรฉn se han inicializado.
- Accediendo al elemento almacenado en el รญndice [0][1][0] de la matriz e imprimiรฉndolo en la consola.
- Accediendo al elemento almacenado en el รญndice [0][1][1] de la matriz e imprimiรฉndolo en la consola.
- Fin del cuerpo de la funciรณn main().
Puntero a una matriz
A puntero es una variable que contiene una direcciรณn. Ademรกs de usar un puntero para almacenar la direcciรณn de una variable, podemos usarlo para almacenar la direcciรณn de una celda de una matriz. El nombre de una matriz apunta constantemente a su primer elemento. Considere la declaraciรณn que figura a continuaciรณn:
int age[5];
La edad es un puntero a $age[0], la direcciรณn del primer elemento de una matriz denominada age. Considere el siguiente ejemplo:
#include <iostream> using namespace std; int main() { int *john; int age[5] = { 19, 18, 21, 20, 17 }; john = age; cout << john << "\n"; cout << *john; }
Salida:
Tenga en cuenta que el primer valor del resultado anterior puede devolver un valor diferente dependiendo de la direcciรณn asignada al primer elemento de la matriz en la memoria de su computadora.
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluyendo el archivo de encabezado iostream en nuestro cรณdigo. Nos permitirรก leer y escribir en la consola.
- Incluyendo el espacio de nombres estรกndar para usar sus clases y funciones sin llamarlo.
- Llamar a la funciรณn main() dentro de la cual se debe agregar la lรณgica del programa.
- Inicio del cuerpo de la funciรณn main().
- Declarar una variable de puntero llamada *john.
- Declarar una matriz de enteros llamada edad para almacenar 5 nรบmeros enteros. Tambiรฉn se han inicializado los valores de los nรบmeros enteros.
- Asignando a la variable john el valor de la direcciรณn del elemento almacenado en el primer รญndice del array age.
- Imprimiendo el valor de la variable john, que es la direcciรณn del elemento almacenado en el primer รญndice de la matriz age.
- Imprimiendo el primer valor almacenado en la edad de la matriz.
- Fin del cuerpo de la funciรณn main().
Los nombres de las matrices se pueden utilizar como punteros constantes y viceversa. Esto significa que puede acceder al valor almacenado en el รญndice 3 de la edad de la matriz con *(edad + 3). Por ejemplo:
#include <iostream> using namespace std; int main() { // an array of 5 elements. int age[5] = { 19, 18, 21, 20, 17 }; int *p; p = age; // output array values cout << "Using pointer: " << endl; for (int x=0; x<5; x++) { cout << "*(p + " << x << ") : "; cout << *(p + x) << endl; } cout << "Using age as address: " << endl; for (int x = 0; x < 5; x++) { cout << "*(age + " << x << ") : "; cout << *(age + x) << endl; } return 0; }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluyendo el archivo de encabezado iostream en nuestro cรณdigo. Nos permitirรก leer y escribir en la consola.
- Incluyendo el espacio de nombres estรกndar para usar sus clases y funciones sin llamarlo.
- Llamar a la funciรณn main() y comenzar el cuerpo de la funciรณn main().
- Un comentario. El C++ El compilador omitirรก esto.
- Declarar una matriz llamada edad para almacenar 5 nรบmeros enteros.
- Creando un puntero entero p.
- Asignando p el valor de la direcciรณn del primer elemento de la matriz age.
- Un comentario. El C++ El compilador omitirรก esto.
- Imprime un texto en la consola.
- Crea un nรบmero entero x usando un bucle for. El { marca el comienzo del cuerpo del bucle for.
- Imprima los valores de x combinados con algรบn otro texto en la consola.
- Imprima los valores de *(p + x) en la consola.
- Fin del cuerpo del bucle for.
- Imprime un texto en la consola.
- Crea una variable x usando un bucle for. El { marca el comienzo del cuerpo del bucle for.
- Imprima los valores de x de 0 a 4 junto con algรบn otro texto.
- Imprima los valores de *(edad + x).
- Fin del cuerpo del bucle for.
- Valor de retorno si el programa se ejecuta correctamente.
- Fin del cuerpo de la funciรณn main().
Accediendo a los valores de un Array
Los elementos de una matriz se acceden mediante sus respectivos รญndices. El รญndice del elemento al que se accede se agrega entre corchetes [ ] inmediatamente despuรฉs del nombre de la matriz. Por ejemplo:
int john = age[2];
En el ejemplo anterior, simplemente indicamos que la edad de John estรก almacenada en el รญndice 2 de la matriz denominada edad. Esto significa que la edad de John es 3.rd valor en la edad de la matriz. Aquรญ tienes un completo C++ ejemplo que muestra cรณmo acceder e imprimir este valor:
#include<iostream> using namespace std; int main() { int age[5] = { 19, 18, 21, 20, 17 }; int john = age[2]; cout << "The age of John is:"<<john; }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluyendo el archivo de encabezado iostream en nuestro cรณdigo. Nos permitirรก leer y escribir en la consola.
- Incluyendo el espacio de nombres estรกndar para usar sus clases y funciones sin llamarlo.
- Llamar a la funciรณn main() dentro de la cual se debe agregar el cรณdigo.
- Inicio de un cuerpo de la funciรณn main().
- Declarar una matriz llamada edad para almacenar 5 elementos enteros.
- Accediendo al valor almacenado en el รญndice 2 de la edad de la matriz y almacenando su valor en una variable llamada john.
- Imprimiendo el valor de la variable john en la consola junto con otro texto.
Ventajas de una matriz en C++
A continuaciรณn, se muestran las ventajas y beneficios de utilizar Array en C++:
- Los elementos de la matriz se pueden atravesar fรกcilmente.
- Fรกcil de manipular datos de matriz.
- Se puede acceder a los elementos de la matriz de forma aleatoria.
- Las matrices facilitan la optimizaciรณn del cรณdigo; por lo tanto, podemos realizar mucho trabajo usando menos cรณdigo.
- Fรกcil de ordenar datos de matriz.
Desventajas de una matriz en C++
- Una matriz tiene un tamaรฑo fijo; por lo tanto, no podemos agregarle nuevos elementos despuรฉs de la inicializaciรณn.
- Asignar mรกs memoria de la necesaria genera un desperdicio de espacio de memoria y una menor asignaciรณn de memoria puede crear un problema.
- Se debe conocer de antemano el nรบmero de elementos que se almacenarรกn en una matriz.











