C/Visual C - apuntaodres en procedimientos

 
Vista:

apuntaodres en procedimientos

Publicado por Eleazar (25 intervenciones) el 28/10/2004 20:59:07
Tengo mi estructura definida de la siguiente manera :

typedef struct Elemento{ // Estructura del puntero
Elemento *siguiente;
int Valor;
};
en el main tengo lo siguiente :

Elemento Inilista; // Inilista es la cabecera de la cadena (es el indice)
Elemento *actual; // actual indica cual es el ultimo elemento
actual = &Inilista;

y deseo utilizar actual en un procedimiento, con lo que lo llamo asi :

Agrega(contador,actual);

Sin embargo, al compilar me tira los siguientes errores :

- Cannot convert Elemento * to Elemento in function main().
- Type mismatch in parameter 'pila' in call to 'Agregar(int &, Elemento &)' in function main().

el procedimiento que quiero llamar es el siguiente :

void Agrega(int &donde,Elemento &pila)
{
Elemento *ahora; // se crea elemento de trabajo
ahora = &pila;
ahora->siguiente = new Elemento;
printf(" Escriba valor a agregar :");
scanf("%i",&ahora->Valor); // se ingresa el valor
fflush(stdin);
ahora = ahora->siguiente; // se direcciona al nodo siguiente
ahora->siguiente = NULL;
printf(" %i agregado exitosamente en la posicion %i.",ahora->Valor,donde);
donde = donde++;
delete(ahora); //se borra ahora para liberar la memoria
}

Gracias de antemano a los que me puedan ayudar a entender que sucede con esto...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:apuntaodres en procedimientos

Publicado por chuidiang (677 intervenciones) el 29/10/2004 08:58:48
Agrega () lleva referencias en el parametro, no punteros.

Si declaras Agrega (Elemento &pila)

debes pasarle un Elemento, no un puntero

Elemento unElemento;
Agrega(unElemento);

Si declaras Agrega (Elemento *pila)

entonces sí puedes pasar un puntero a Elemento.

Elemento *unElemento;
Elemento otroElemento;

Agrega (unElemento);
Agrega (&otroElemento);

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar