Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/03/2008, 17:46
fightmx
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 10 meses
Puntos: 22
Re: Obtener tamaño array dinámico

Cita:
Si gracias, eso ya lo sé, pero el problema es que cuando paso el array a otra función, y le hago un sizeof me devuelve 4, es decir, el tamaño de un char solo.
En realidad 4 bytes es el tamaño que ocupa el puntero en memoria y no el tamaño de un char, lo que sucede aquí es que cuando pasas el arreglo a una función este es tratado como un puntero (independientemente de la notación que utilices en el header de la función, esto es, puede ser (char *p) ó (char p[]) por ejemplo), de esta forma siempre que utilices sizeof p dentro de la función obtendrás el tamaño de un char* y no el tamaño del arreglo de caracteres. Puedes utilizar un segundo parámetro en la función que especifique el tamaño del arreglo, por ejemplo:
Código:
void myfunc(char *array, int size); // declaración 
myfunc(myarray, sizeof myarray/sizeof myarray[0]);  // llamada de la función
Salu2.