I'm studying C and I'm doubtful about the difference of the following lines:
(*depois).agora = 20
and
*depois.agora = 20;
So I understood the point .
has priority and the compiler would try to solve depois.agora
and after that it would solve *(depois.agora)
Then, depois
is the memory address. if I tried to access *(depois.agora)
, would not I be getting the value that is contained in the address depois.agora
?
What would be the difference between the 2 lines?
#include <stdio.h>
struct horario
{
int hora;
int minuto;
int segundo;
};
int main(void)
{
struct horario agora;
struct horario *depois;
depois = &agora; // depois aponta para agora, ou seja, armazena o endereco de memoria de agora
(*depois).agora = 20; // "atalho": depois->agora = 20
*depois.agora = 20; // errado, por quê?
// * = operador de derreferência
return 0;
}