tamaño de vectores dinámicos
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!! :)
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!! :)
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...
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...
Ha, me olvidava... deve ser medio ovio pero pasal a la funcion que quiera alterar el vector el puntero a la estructura...
