elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como saber el tamaño de un array de tipo int
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como saber el tamaño de un array de tipo int  (Leído 49,781 veces)
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Como saber el tamaño de un array de tipo int
« en: 8 Noviembre 2012, 16:40 pm »

Estoy trabajando con un progrma que hace uso de un array de tipos entero, y necesito determinar el tamaño en base al cotenido de esta; probe con strlen pero esta solo devuelve la longitud de uno de tipo char.

Código
  1. char cadena[15]= "Hola" ;

Aka definimos una arary de tamaño 15, pero la hemos inicializado y tiene una longitud de solo  4,
pasando esto a strlen efectivamente devuelve 4; existe una funcion igual a esta para
aplicarla a un entero.

Desde ya mucha gracias


« Última modificación: 8 Noviembre 2012, 18:58 pm por neo-System » En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: Como saber el tamaño de un array de tipo int
« Respuesta #1 en: 8 Noviembre 2012, 16:46 pm »

A ver, vamos por parte, según yo, lo que estas haciendo, es calcular el largo de string, y no del arreglo del char puesto que lo has creado con 15 posiciones, por lo tanto el largo será de 15.

Si tu haces esto por ejemplo:

int array[3];
array[0]=1;

y haces el metodo para tomar el tamaño, va a estar ocupado solo una posicion, pero el largo del array seguira siendo 3.

Si estoy equivocado, me avisan.

PD: No se C / C++
pero en JAVA es asi.


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Como saber el tamaño de un array de tipo int
« Respuesta #2 en: 8 Noviembre 2012, 16:47 pm »

¡Buenas!

Cuando declaras un vector, dentro de su ambito de uso puedes saber el tamaño con el operador sizeof, pero si utilizas un vector como parametro de una funcion no podras saber cual es su tamaño original, sizeof siempre te dara la cantidad de bytes que ocupa un puntero del tipo del vector. Si pasas un vector como parametro de una funcion y la funcion depende del tamaño del vector, tendras que añadir a la lista de parametros el tamaño.

Código
  1. #include <stdio.h>
  2.  
  3. void funcion1(int x[])
  4. {
  5.    printf("Como parametro de funcion1: %d bytes.\n", sizeof(x));
  6. }
  7.  
  8. void funcion2(int *x[])
  9. {
  10.    printf("Como parametro de funcion2: %d bytes.\n", sizeof(*x));
  11. }
  12.  
  13. int main(int argc, char *argv[])
  14. {
  15.    int x[10];
  16.  
  17.  
  18.    printf("Dentro del ambito en el que se ha declarado: %d bytes.\n", sizeof(x));
  19.  
  20.    funcion1(x);
  21.    funcion2(&x);
  22.  
  23.    return 0;
  24. }
  25.  

A parte funcion2 me insulta por pasarle la direccion de memoria de x...

¡Saludos!

PD: Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Como saber el tamaño de un array de tipo int
« Respuesta #3 en: 8 Noviembre 2012, 16:55 pm »

A parte funcion2 me insulta por pasarle la direccion de memoria de x...
Eso sucede porque en tu programa "&x" es de tipo "int (*)[10]" mientras que la función "funcion2" espera, como segundo argumento, un valor de tipo "char **":
Código
  1. void funcion2(int *x[]) ...
  2.  
  3. ==>
  4.  
  5. void funcion2(int **x) ...

Al no coincidir los tipos tu compilador genera el mensaje de error.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Como saber el tamaño de un array de tipo int
« Respuesta #4 en: 8 Noviembre 2012, 19:31 pm »

Utilizando la  expresion sizeof c / sizeof *c dividiendo el tamaño completo del array
entre el tamaño del primer elemento, se obtiene la longitud del array de esta forma:
Código
  1. int c[] = { 1, 2, 3, 4 };
  2.  
  3. printf("Cantidad de elemetos: %d", sizeof c / sizeof *c );

Salida: 4

Pero sin especificar el tamaño del array ya que si lo hago me tira solo el tamaño del mismo y no
los elementos que la componen
De esta forma:
Código
  1. int c[10] = { 1, 2, 3, 4 };
Me da el valor que les comentaba que es 10, cuando el que deseo es 4.

Muchas gracias a los que contestaron  ;)
« Última modificación: 8 Noviembre 2012, 19:53 pm por neo-System » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
obtener el tamaño de las distintas dimenciones de un array
Programación Visual Basic
<[(x)]> 5 4,122 Último mensaje 11 Febrero 2009, 03:03 am
por <[(x)]>
¿Cómo puedo saber que tipo de RAM es?
Hardware
Vocreat 3 3,818 Último mensaje 24 Septiembre 2010, 00:02 am
por simorg
Como saber en que tipo de red me encuentro « 1 2 »
Redes
hunter18 12 14,240 Último mensaje 13 Abril 2011, 22:04 pm
por zerocoolcom
Ayuda - Ajustar tamaño array - variable
Programación C/C++
Miky Gonzalez 4 3,046 Último mensaje 4 Julio 2012, 13:19 pm
por Miky Gonzalez
Tamaño de array através de variable
Programación C/C++
eleon 3 3,125 Último mensaje 20 Julio 2012, 01:48 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines