Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/09/2009, 14:15
Avatar de Slackin
Slackin
 
Fecha de Ingreso: noviembre-2007
Ubicación: Puerto Montt, Chile
Mensajes: 86
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Duda con indireccion multiple ( puntero a puntero )

En primer caso *persona, tu le estas pasando un puntero o la dirección de una instacia de estructura(struct). Que es la forma mas tipica(*p) a la hora de pasar valores por referencia en las funciones.
En el segundo caso **persona, tu le estas pasando un puntero que guarda la direccion de otro puntero(p1). Este p1 guarda la direccion de una instancia de estructura. He leído por ahí que algunos programadores llaman a evitar estos casos(**p) e intentar implementarlos de otra forma.
De acuerdo a la defincion de tu RemoveContacto, sólo el primer caso hará lo que se desea que haga(el otro debería dar error). Para utilizar el segundo caso habria que hacer las modificaciones siguientes a la clase RemoveContacto:

Código:
struct contacto *removeContacto(struct contacto **persona,int posición){
	struct contacto *anterior=NULL;
	while(posicion>1){
		anterior=*persona;
		*persona=(*persona)->siguiente;
		posicion--;
	}
	if(anterior==NULL){
		anterior= (*persona)->siguiente;
		free(*persona);
		return anterior;
	}else{
		anterior->siguiente=(*persona)->siguiente;
		free(*persona);
                return NULL;
	}
}
Espero que de algo te pueda ayudar esto.
Quizas tambien quieras leer acá: http://es.geocities.com/jorge_hefty/temas2.htm