Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Una duda con un puntero.

Iniciado por Loopen, 10 de Noviembre de 2002, 12:23:16 AM

« anterior - próximo »

Loopen

                                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.                                

MChiz

                                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!!