Buenas a todos, tengo unas cuantas dudas y espero poder resolverlas con vosotros.
Tengo que coger un ejercicio de administración de hoteles, hecho anteriormente, y hacerlo, pero esta vez usando punteros.
Por ejemplo, las primeras líneas del .c con
main, donde declaro la estructura y la inicializo:
HOTELES hotel[NUM_HOTELES]; //3 hoteles
/***************/
HOTELES_inicializarHoteles(hotel); //Inicializamos el número de clientes de cada hotel a 0
Dicha función está definida así:
void HOTELES_inicializarHoteles(HOTELES hotel[])
{
int i;
for(i=0; i<NUM_HOTELES; i++)
{
hotel[i].numero_clientes = 0;
}
}
Como se trata de reescribir el programa usando punteros, me he limitado a cambiar el parámetro:
void HOTELES_inicializarHoteles(HOTELES *hotel)
Pero no consigo hacer nada. Me da error tanto si intento acceder a la posición del hotel con aritmética de punteros
*(hotel + i).numero_clientes = 0;
como accediendo a la estructura con el operador "->"
hotel[i]->numero_clientes = 0;
(Y haciendo ambas cosas juntas también de da error, claro).
En cambio, si en el parámetro de la función defino
hotel como indirección doble, sí que debo emplear el operador "->". Pero bueno, que tampoco tengo del todo claro por qué hay que hacerlo así, lo he hecho un poco al tuntún. Además, así da error en ejecución...
Mi otra duda es si también debería modificar las estructuras anidadas, es decir, si en el primer ejercicio tengo una estructura dentro de otra de forma "simple", si ahora tengo que anidarlas usando punteros.
El tema de los punteros lo tengo claro, cómo y cuándo usar los operadores, direcciones de memoria, etc. Pero ahora con las estructuras no lo tengo nada claro.
Gracias de antemano, perdón por el tocho y saludos.