Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Matrices en C++ | Declarar | Inicializar | Ejemplos de puntero a matriz

¿Qué es una matriz?

Una matriz es una estructura de datos que almacena un elemento del mismo tipo de datos de forma secuencial. Una matriz de C++ 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 diversas variables. Cada valor agregado a la matriz se identifica mediante un índice.

En este tutorial de C++, aprenderá:

¿Por qué necesitamos arreglos?

Las 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++

La declaración de matriz en C++ implica indicar el tipo y la cantidad de elementos que la matriz almacenará. Sintaxis:

type array-Name [ array-Size ];

Reglas para declarar un arreglo unidimensional en C++.

Por ejemplo, puede crear una matriz llamada edad y almacenar las edades de 5 estudiantes de la siguiente manera:

int age[5];

La matriz age almacenará 5 números enteros que representan las edades de diferentes estudiantes.

Inicialización de matriz

La inicialización de arreglos es el proceso de asignar/almacenar elementos a un arreglo. La inicialización se puede hacer 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 solo 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 puede asignar un elemento a una matriz utilizando 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á el 4 th elemento de la matriz.

Tipos de matrices

Hay dos tipos de arreglos de C++:

Matriz unidimensional

Esta es una matriz en la que los elementos de datos se organizan linealmente en una sola dimensión. Comúnmente se le llama matriz 1-D. Sintaxis:

datatype array-name[size];

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:

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluyendo el espacio de nombres estándar para usar sus clases y funciones sin llamarlo.
  3. Llamar a la función main() dentro de la cual se debe agregar la lógica del programa.
  4. Inicio del cuerpo de la función main().
  5. Declarar una matriz llamada edad para almacenar 5 enteros. Los 5 enteros también se han inicializado.
  6. Cree una variable entera x usando un bucle for.
  7. El comienzo del cuerpo del ciclo for.
  8. Utilizar la variable de bucle x para iterar sobre los valores de la matriz age e imprimirlos en la consola. El "\n" es un carácter de nueva línea y se imprime en una nueva línea después de cada iteración.
  9. Fin del cuerpo del bucle for a.
  10. Fin del cuerpo de la función main().

Matriz multidimensional

Esta es 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 1-D. Es una matriz con filas y columnas. Para declarar una matriz 2D, use la siguiente sintaxis:

type array-Name [ x ][ y ];

El tipo debe ser un tipo de datos C++ válido. 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 utilizando la forma a[x][y], donde x es el número de fila e y el número de columnas a las que pertenece el elemento.

Aquí hay 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 se puede ver como una matriz de 2 × 3. Hay 2 filas y 3 columnas. Se puede acceder al elemento 0 como a[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 a[1][2] porque está ubicado en la intersección de fila indexada 1 y columna indexada 2.

Tenga en cuenta que simplemente agregamos llaves para diferenciar las diferentes filas de elementos. La inicialización también podría haberse hecho de la siguiente manera:

int a[2][3] = {0, 2, 1, 4, 3, 7};
   };

El siguiente ejemplo de C++ demuestra cómo inicializar y atravesar 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:

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluyendo el espacio de nombres estándar para usar sus clases y funciones sin llamarlo.
  3. Llamar a la función main() dentro de la cual se debe agregar el código.
  4. Inicio del cuerpo de la función main().
  5. Un comentario. El compilador de C++ omitirá esto.
  6. Declarar una matriz 2D de 3 filas y 2 columnas. También se han agregado elementos a la matriz.
  7. Un comentario. El compilador de C++ omitirá esto.
  8. Crear una variable i usando un bucle for a. Esta variable iterará sobre los índices de fila de la matriz.
  9. Crear una variable j usando un bucle for. Esta variable iterará sobre los índices de columna de la matriz.
  10. Inicio del cuerpo de los bucles.
  11. Imprime los valores de las variables i y j en la consola entre corchetes en la consola.
  12. Imprime el valor almacenado en el índice [i][j] de la matriz a.
  13. Fin del cuerpo de los bucles.
  14. La función main() debería devolver un valor entero si el programa funciona bien.
  15. 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, usamos 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:

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluyendo el espacio de nombres estándar para usar sus clases y funciones sin llamarlo.
  3. Llamar a la función main() dentro de la cual se debe agregar la lógica del programa.
  4. Inicio del cuerpo de la función main().
  5. Declarar una matriz 3D denominada an de tamaño 2x3x2. Los valores de la matriz también se han inicializado.
  6. Acceder al elemento almacenado en el índice [0][1][0] de la matriz e imprimirlo en la consola.
  7. Acceder al elemento almacenado en el índice [0][1][1] de la matriz e imprimirlo en la consola.
  8. Fin del cuerpo de la función main().

Puntero a una matriz

Un 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 matriz. El nombre de una matriz apunta constantemente a su primer elemento. Considere la declaración dada a continuación:

int age[5];

La edad es un puntero a $edad[0], la dirección del primer elemento de una matriz llamada edad. 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 de la salida anterior puede devolver un valor diferente según 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:

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluyendo el espacio de nombres estándar para usar sus clases y funciones sin llamarlo.
  3. Llamar a la función main() dentro de la cual se debe agregar la lógica del programa.
  4. Inicio del cuerpo de la función main().
  5. Declarar una variable de puntero llamada *john.
  6. Declarar una matriz de enteros llamada edad para almacenar 5 enteros. Los valores de los enteros también se han inicializado.
  7. Asignar a la variable john el valor de la dirección del elemento almacenado en el primer índice del arreglo age.
  8. Imprimir el valor de la variable john, que es la dirección del elemento almacenado en el primer índice de la matriz age.
  9. Imprimiendo el primer valor almacenado en la matriz age.
  10. Fin del cuerpo de la función main().

Los nombres de las matrices se pueden usar como punteros constantes, y viceversa también es cierto. Esto significa que puede acceder al valor almacenado en el índice 3 de la matriz age con *(age + 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:

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluyendo el espacio de nombres estándar para usar sus clases y funciones sin llamarlo.
  3. Llamar a la función main() y comienzo del cuerpo de la función main().
  4. Un comentario. El compilador de C++ omitirá esto.
  5. Declarar una matriz llamada edad para almacenar 5 enteros.
  6. Crear un puntero de entero p.
  7. Asignando a p el valor de la dirección del primer elemento del arreglo edad.
  8. Un comentario. El compilador de C++ omitirá esto.
  9. Imprime algo de texto en la consola.
  10. Cree un entero x usando un bucle for. El { marca el comienzo del cuerpo del bucle for a.
  11. Imprima los valores de x combinados con algún otro texto en la consola.
  12. Imprime los valores de *(p + x) en la consola.
  13. Fin del cuerpo del bucle for a.
  14. Imprime algo de texto en la consola.
  15. Cree una variable x usando un bucle for. El { marca el comienzo del cuerpo del bucle for.
  16. Imprime los valores de x de 0 a 4 junto con otro texto.
  17. Imprime los valores de *(edad + x).
  18. Fin del cuerpo del ciclo for.
  19. Valor devuelto si el programa se ejecuta correctamente.
  20. Fin del cuerpo de la función main().

Acceso a los valores de un Array

Se accede a los elementos de una matriz utilizando 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 afirmamos que la edad de Juan se almacena en el índice 2 de la matriz denominada edad. Esto significa que la edad de john es el 3 rd valor en la edad de la matriz. Aquí hay un ejemplo completo de C++ 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:

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en nuestro código. Nos permitirá leer y escribir en la consola.
  2. Incluyendo el espacio de nombres estándar para usar sus clases y funciones sin llamarlo.
  3. Llamar a la función main() dentro de la cual se debe agregar el código.
  4. Inicio de un cuerpo de la función main().
  5. Declarar una matriz llamada edad para almacenar 5 elementos enteros.
  6. Accediendo al valor almacenado en el índice 2 de la edad del arreglo y almacenando su valor en una variable llamada john.
  7. Imprimir el valor de la variable john en la consola junto con otro texto.

Ventajas de un Array en C++

Estos son los pros/beneficios de usar Array en C++:

Desventajas de una matriz en C++

Resumen


Lenguaje C

  1. Matrices de C#
  2. Pasar matriz a una función en programación C++
  3. Matrices de copia de Java
  4. C++ do...while bucle con ejemplos
  5. C++ Asignación dinámica de arreglos con ejemplo
  6. Punteros de C++ con ejemplos
  7. Tipo de datos Char de C++ con ejemplos
  8. Sobrecarga de operadores de C++ con ejemplos
  9. Funciones de C++ con ejemplos de programas
  10. Tutorial de colecciones de C# con ejemplos
  11. Tutorial de Java Arrays:declarar, crear, inicializar [ejemplo]