punteros y c

Buenas a todos, tengo un par de problemas con unos punteros y procedimientos.

A modo de resumen tengo lo siguiente:

En un modulo tengo declarado una estructura del siguiente tipo:

struct lala {
/*tipos varios*/
}

struct toto {
/*tipos varios*/
struct lala pepe
}

Luego tengo una funcion en el modulo del siguiente tipo:

void punteroLala (struct toto *f, struct lala *v){
/* El puntero v almacenara la direccion de memoria de la
estructura de tipo lala (cuyo nombre es pepe) que esta dentro de la estructura toto*/
/*Nota, no lo devuelvo con un return, ya que esto se
usara para otras cosas*/

v = &f->pepe;

/*Bueno, en teoria v almacena la direccion de memoria de la estructura de tipo lala*/


En el programa "principal"

tendria una cosa parecida a:

struct toto f;
struct lala *v;

punterolala(*f, v);




v deberia de contener la direccion de memoria de la estructura lala.

De hecho si hago printf a mansalva, antes de llamar al procedimiento vale 0, despues de hacer el "v = &f->pepe;" si hago un printf("%p", v); tiene el mismo valor que printf("%p" &f->pepe);
pero despues de regresar de la funcion punterolala, v sigue teniendo el valor de 0, por lo que v no apunta a lo que deberia apuntar, y despues de eso, como intento usar la direccion de v, me da un core....

Bueno, espero haberme explicado bien, me imagino que sera alguna estupidez, pero no encuentro donde esta mal.

Saludos y gracias.

pd: lo peor de todo es que si lo hago mediante un return funciona todo bien, pero en fin, que no se porque falla si no lo hago mediante el return.....
0 respuestas