Imaginemos esta cabecera de una funcion en C
void funcion(estructura **a){
estructura es una estructura y la llamada la hago asi
funcion(&a); Donde a es un puntero a una estructura y por tanto le paso un puntero a ese puntero.
Bien, mi problema es cuando desde dentro de la funcion intento acceder a un campo de esa estructura para modificarlo, de esta manera.
*a->campo=b;
Me da un error diciendo que la parte izquierda de -> debe ser un puntero a una estructura, pero ahora digo yo, no es eso justamente lo que estoy haciendo?..
He probado tambien esto *(a)->campo=b y nada, incluso esto
a->campo=b, pero nada da resultado, yo para mi la primera forma es la correcta pero no se porque no funciona.
Cuidadooooo!!
Tienes que hacer (*a)->campo = b ( el asterisco dentro del parentesis )
Te recomiendo que para estos casos utilices las referencias del C++ ( en caso de que te sea posible )
Es decir:
void funcion( estructura *&a ) {
a->miembro = b;
}
Asi te ahorras el tener que poner el asterisco y queda todo mas limpio y bonito : )
Y al llamar la funcion haces no tienes que poner el offset:
funcion( a ); // Antes funcion( &a )
Espero que te haya ayudado!
Un saludoteee!!