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






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.