Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/04/2015, 04:37
ecfisa
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: El "sizeof" para saber el tamaño del arreglo no me funciona

Hola RGT.

Así, tál como lo mostras, no concibo que no te funcione. Pero si no me equivoco, estas haciendo algo como esto:
Código C:
Ver original
  1. ...
  2. void mostrar ( int *v ) {
  3.   int i;
  4.   for ( i = 0; i < sizeof(v) / sizeof(int); i++ )
  5.     printf ( "%d ", v[i] );
  6. }
  7.  
  8. int main ( ) {
  9.   int v[10] = {5, 8, 2, 3, 1, 4, 6, 9, 2, 10};
  10.   mostrar ( v );
  11.   ...
de ese modo sí que entiendo el comportamiento que comentas... Por que,
Código:
sizeof ( v ) = 4 y sizeof ( int ) = 4

entonces:
sizeof ( v ) / sizeof ( int ) = 1

por lo que:
for ( i = 0; i < 1 ; i++) -> i = 0
de ese modo, sólo se muestra el valor de v[0] que es 5.

Deberías hacer algo similar a esto:
Código C:
Ver original
  1. ...
  2. void mostrar ( int* v, int sz ) {
  3.   int i;
  4.   for ( i = 0; i < sz; i++ )
  5.     printf ( "%d ", v[i] );
  6. }
  7.  
  8. int main ( ) {
  9.   int v[10] = {5,8,2,3,1,4,6,9,2,10};
  10.   mostrar ( v, sizeof(v) / sizeof(int) );

Saludos.