Ver Mensaje Individual
  #6 (permalink)  
Antiguo 31/03/2015, 16:37
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Valores repetidos en un arreglo en C

Cita:
Iniciado por vangodp Ver Mensaje
si lo pones mas numeros a la hora de declarar si, de forma manual con un scanf ya no te serviría, por que le tendrías que dar un tamaño fijo al arreglo, no se lo tomaría el tamaño de forma automática.

Si tenemos un array como int numeros[] = {8, 4, 8, 5, 4}; automáticamente toma un tamaño de 5, ya que son 5 elementos. XD pero ese tamaño no lo puse yo, simplemente fue añadiendo números al arreglo a mi bola, para saber cuantos elementos tengo a la hora de un for y no tener que estar contándolos, hago sizeof ( numeros ) / sizeof ( numeros[0] ).

Si recuerdas sizeof retorna la cantidad en bytes que tiene un tipo de dato, un simples char ocupa 1 byte, no necesitaría dividir, si hago sizeof( char ) me devuelve 1 que es un byte. Lo puedes comprobar haciendo printf("%d", sizeof(char));.

Bien.. Si hago un printf("%d", sizeof(int)); en mi ordenador va imprimir un 4, que son 4 bytes, el tamaño de un tipo de dato puede variar de un ordenador a otro. Pero la cosa es que si hago un sizeof de un array de enteros, me va a dar la cantidad de elementos que contiene el array pero en bytes que en mi ordenador son 4 veces más, o sea que si tengo 5 elementos en el array me va dar un 5*4bytes, eso no me da en absoluto la cantidad de elementos que tiene el array, si no que 4 veces más(en mi pc, en otro puede variar). La solución es dividir sizeof(array) por sizeof(int) que se traduce dividir 5 elementos que ocupan 4 bytes cada uno y que en un total tiene 20bytesTotal=5elementos*4bytes. Si divido por la primera posición del arreglo es lo mismo que dividir por un entero. En otras palabras: sizeof(array[0]) es lo mismo que sizeof(int), si array fuera un int.

Lo que hace sizeof ( array ) / sizeof ( array[0] ) es decirme la cantidad de elementos que tiene un arreglo sea del tipo que sea. Muy útil para saber el tamaño de arreglos que no has dado un tamaño fijo, si no que han tomado el tamaño de forma automática.
hola,
valla ya veo, es muy útil si.

Entonces, con esto:
sizeof ( arreglo ) / sizeof ( arreglo[0] )

puedo tener la cantidad de valores que tiene el arreglo.
perfecto hermano!, me has ayudado bastante no se como agradecertelo, he aprendido cosas nuevas contigo, en hora buena!!