Como saber el tamaño de un arreglo en C++

Funciones para conocer el tamaño de un arreglo en C++

Teniendo en cuenta que un arreglo básicamente es un espacio reservado con un nombre identificador y que cuenta con varias "casillas" donde nos permite guardar datos distintos en cada casilla, entonces entendemos que cuando se habla del tamaño de un arreglo nos referimos a la cantidad de espacios reservados que posee el arreglo, hay momentos donde se hace necesario conocer el largo de un arreglo para hacer ciertas operaciones con él, también les explicaré como saber cuántos registros se han ingresado al arreglo.

Si declaramos al principio su tamaño ejemplo: "arreglo[50]" entonces desde el principio sabemos su tamaño por tanto no es muy útil la función que les enseñaré, pero cuando el arreglo se declara dinámicamente ejemplo: como resultado de una lista de datos devuelta por una base de datos o archivo, entonces necesitamos saber cuántos registros tiene nuestro arreglo.

Función para saber el tamaño de un arreglo



A continuación les dejo un código de ejemplo que tiene un arreglo cuyo tamaño es 50, a este arreglo he ingresado 2 valores a modo de ejemplo, le recomiendo que lea los comentarios agregados al código para que sepa identificar cada parte, posterior al ejemplo explico algunos datos extra muy importantes sobre este codigo.

#include <iostream>
#include <cstdlib>

using namespace std;
int arreglo[50]; // Creamos el arreglo aqui
int largo; // Esta funcion es para guardar el tamaño y luego imprimirlo
int main()
{
arreglo[0]=10; // Añadimos 2 valores a las primeras 2 casillas
arreglo[1]=20;

largo = sizeof(arreglo)/sizeof(arreglo[0]); // Esta linea hace todo el trabajo
cout << largo << endl;

system("pause");
}


Ejemplo compilado de código para saber el tamaño de un arreglo

Obsérvese que en el ejemplo anterior lo que hacemos es obtener dos números a través de la función sizeof, dividimos sizeof(arreglo), entre alguno de los elementos del arreglo "sizeof(arreglo[0])", usualmente se divide entre el primer elemento del arreglo y este está ubicado en la casilla 0, eso nos da como resultado el tamaño de cualquier arreglo.

Cantidad de elementos de un arreglo C++



Hay momentos donde lo que necesitamos saber es cuantos elementos se han ingresado a un arreglo, en el ejemplo anterior aunque reservamos 50 espacios solo se han ingresado 2 elementos, este dato se puede obtener mediante un bucle no mayor a 5 líneas de código, observe en el siguiente ejemplo como logramos este emprendimiento

#include <iostream>

#include <cstdlib>



using namespace std;

int arreglo[50]; // Creamos el arreglo aqui
int contador = 0; // Esta funcion es para guardar el tamaño y luego imprimirlo
int registro;
int main()

{

arreglo[0]=10; // Añadimos 2 valores a las primeras 2 casillas

arreglo[10]=20;


/* El siguiente bucle recorrera una por una todas las casillas del arreglo
y se cerrara cuando el indicador casilla sea igual a 50*/

cout << arreglo[5]<< endl;
for(int casilla = 0;casilla<50;casilla++) {

registro=arreglo[casilla];

if(registro != 0) {

contador++;

}

}


cout << contador << endl;
system("pause");

}


Código para obtener la cantidad de elementos dentro de un arreglo

Este segundo código puede incluso ser más útil debido a que la cantidad de elementos ingresados en nuestro arreglo puede ir cambiando durante el tiempo de ejecución del programa.
Comentarios y preguntas
Maria:
arreglo[casilla]>sizeof(arreglo-1)


Podrías explicar a detalle esta condicion, por favor?.
Codigazo:
Hola Maria acabo de actualizar el codigo y he cambiado

arreglo[casilla]>sizeof(arreglo-1)


por

casilla<50


Esto porque el código anterior aunque daba resultado para esta operacion en verdad no tenia sentido y en otras situaciones podia dar un resultado equivoco.

Esta línea lo que permite es que el bucle for se recorra desde la casilla 0 hasta la 49. Si el tamaño de nuestro arreglo es otro entonces ha de cambiarse el 50 por el tamaño del arreglo, si se desconoce se puede utilizar "sizeof(arreglo)/sizeof(arreglo[0])" para conocerlo tal y como nos muestra el primer ejemplo.