Ver Mensaje Individual
  #8 (permalink)  
Antiguo 13/04/2014, 13:04
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Como contar el total de items en un array

Los arreglos tienen tanta memoria como se pida:

int a[4]

se pide memoria para 4 enteros,

cuando se indica asi:

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

le digo al compilador "estoy pidiendo tanta memoria como inicializadores haya a la derecha".
En el ejemplo, puse 3 inicializadores, el arreglo es entonces de tamaño 3 (enteros).

Si defino ambos:

int a[5] = {1,2,3};

gana la definicion de la izquierda (hay espacio para 5, pero definí explicitamente 3)



Por otro lado, C y C++ entregan una "pistola cargada", en el siguiente sentido:

mientras te da la libertad de usar los indices que uno quiera al usar el nombre del arreglo

a[0], a[1], a[2]

para que se indiquen o modifiquen los valores del arreglo de mas arriba,

la pistola cargada permite que uno apunte a su pie y dispare, al usar un indice fuera de los limites que tiene ese arreglo.

a[3] = 0

esta asignando a alguna parte de la memoria que no pedí.

¿Como saber el tamaño del arreglo?

Si definimos "tamaño del arreglo" = espacio en memoria solicitado:

basta usar la formula

sizeof(nombre) / sizeof( 1 elemento )

para el ejemplo:

sizeof(a) / sizeof(int)

Si definimos "tamaño del arreglo" = numero de espacios ocupados por mi, usando mi conciencia y que se ve claramente en el codigo que lo hice yo.

Entonces el lenguaje no te apoya en esto, pues el arreglo no sabe de que tamaño es.

El vector en cambio, sabe de que tamaño es, pero para insertar elementos no se usa el operador [], este solo se usa para consultar un elemento que ya se insertó antes.
__________________
Visita mi perfil en LinkedIn