C++ Tamaño de la matriz
Obtener el tamaño de una matriz
Para obtener el tamaño de una matriz, puede utilizar el operador sizeof()
:
Ejemplo
int myNumbers[5] = {10, 20, 30, 40, 50};
cout << sizeof(myNumbers);
Resultado:
20
¿Por qué el resultado muestra 20
en lugar de 5
, cuando la matriz contiene 5 elementos?
Es porque el operador sizeof()
devuelve el tamaño de un tipo en bytes.
Aprendiste del capítulo sobre tipos de datos que un tipo int
suele tener 4 bytes, por lo que desde el principio ejemplo anterior, 4 x 5 (4 bytes x 5 elementos) = 20 bytes.
Para saber cuántos elementos tiene una matriz, hay que dividir el tamaño de la matriz por el tamaño del tipo de datos que contiene:
Ejemplo
int myNumbers[5] = {10, 20, 30, 40, 50};
int getArrayLength = sizeof(myNumbers) / sizeof(int);
cout << getArrayLength;
Resultado:
5
Recorrer una matriz con sizeof()
En el Capítulo Arreglos y Bucles, escribimos el tamaño del arreglo en la condición del bucle (i < 5
). Esto no es ideal, ya que solo funcionará para matrices de un tamaño específico.
Sin embargo, al utilizar el enfoque sizeof()
del ejemplo anterior, ahora podemos crear bucles que funcionen para matrices de cualquier tamaño, lo cual es más sostenible.
En lugar de escribir:
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
cout << myNumbers[i] << "\n";
}
Es mejor escribir:
Ejemplo
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < sizeof(myNumbers) / sizeof(int); i++) {
cout << myNumbers[i] << "\n";
}
Inténtalo tú mismo »
Tenga en cuenta que, en C++ versión 11 (2011), también puede utilizar el bucle "for-each":
Ejemplo
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i : myNumbers) {
cout << i << "\n";
}
Inténtalo tú mismo »
Es bueno conocer las diferentes formas de recorrer una matriz, ya que puede encontrarlas todas en diferentes programas.