tamaño de vectores dinámicos

aydil
20 de Diciembre del 2004
como puedo saber el tamaño de un vector dinámico. Por ej:
vector=(int*)calloc(n,sizeof(int));
y en otro modulo del programa he de recorrer dicho vector y no sé el número de elementos que tiene¿?

gracias!! :)

Hiei
20 de Diciembre del 2004
Bueno, el numero de elementos lo tenes en la variable n pero para hacercelo saver a una funcion tendras que pasarle este valor o crear una estructura con estod dos datos:
typedef struct {
int n, *ptr;
} t_vector;
Y para crearlo t4e crecomiendo hagas una funcion de este estilo:
t_vector *new_vector (int elems) {
t_vector *v = (t_vector*)malloc(sizeof(t_vector));
if (v) {
v->n = elems;
v->ptr = (int*)calloc(n,sizeof(int));
if (!v->ptr) { free(v); v=NULL; }
}
return v;
}
Es indispensable comprovar que malloc y calloc devuelvan distinto de 0 sino es que fallaron y tu funcion deve devolver cero para que el programa lo trate...

Hiei
20 de Diciembre del 2004
Ha, me olvidava... deve ser medio ovio pero pasal a la funcion que quiera alterar el vector el puntero a la estructura...

Alejandro_
20 de Diciembre del 2004

/* si tu código podría ser compilado en C++ no uses "vector" como nombre de variable */

cadena_de_ints = (int*)calloc(n,sizeof(int));

const int numero_de_elementos =
sizeof cadena_de_ints / sizeof cadena_de_ints[0];

Saludos,
Alejandro