time_t now = time(0));
time_t now = time(0);
tm*ltm = localtime(&now);
struct tm *ltm = localtime(&now);
l'istruzione time_t now = time(0); questa qui sarebbe la dichiarazione del tipo della variabile now però non ho capito che fa time(0) è una funzione ? a che serve?
"time_t" è il tipo di variabile con cui si rappresenta il num di secondi passati da mezzanotte del 1/1/1970 UTC.
"time(0)" è la funzione che restituisce tale numero (uguale a "time(NULL);" ).
poi tm*ltm = localtime(&now) che vuol dire che una moltiplicazione tra var è uguale al valore della funzione con passaggio con referenza di now?!?
"tm" è una struttura di <ctime> adibita al salvataggio di informazioni sulla data. In questo modo dichiari un puntatore a tale struttura.
e poi si calcola in fine annoc facendo 1900+ltm->tm_year; bene qua non ho capito cos'è quel 1900 e poi l'addizione tra ltm e il simbolo ->tm_year !?!?!?
"ltm->tm_year" fa riferimento all'elemento "tm_year" della struttura puntata da "tm" (quella che hai inizializzato prima con "localtime()" ). Esso rappresenta il numero di anni passati dal 1/1/1900.
Con questa espressione fai "anno corrente"-"anno di nascita", e se la differenza è >18 ritorna TRUE;
PS: trovi tutto su .
Se ugualmente non capisci, ti consiglio di rivederti la teoria su puntatori, strutture, operazioni aritmetiche e logiche