Ciao ragazzi, è da un po' che non scrivo!! Torno qui per chiedervi aiuto per provare a capire meglio l'uso dei puntatori; in particolare, non riesco ancora a capire per bene come usare i vettori di puntatori, sostituendoli all'uso dei vettori bidimensionali per esempio.
Come al solito, stavo provando a fare qualche esercizio dal libro. In breve il succo è questo: restituire il giorno dell'anno esatto a partire da una data.
Ecco la versione con vettori bidimensionali
codice:
#define MONTH_IN_YEAR 12
// Creiamo un vettore bidimensionale per gestire i casi in cui l'anno è bisestile;
//inoltre creiamo 13 colonne per far cadere gli indici dei mesi proprio tra 1 e 12;
static char daytab[2][MONTH_IN_YEAR+1] =
{
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
int day_of_year(int year, int month, int day)
{
int i, leap;
//controlla se l'anno è bisestile; restituisce 1 se è bisestile, 0 altrimenti
leap = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
for (i = 1; i < month; i++)
day += daytab[leap][i];
return day;
}
Altro paio di maniche è utilizzare invece i puntatori al posto di indici e vettori, come mi richiede l'esercizio. In particolare, dovrei modificare l'array bidimensionale daytab per farlo diventare un puntatore.
Ho provato a crearlo in questo modo
codice:
static char *daytab[13] =
{
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
ma ottengo parecchi errori nella compilazione, tutti identici, che a quanto ho capito mi dicono che l'inizializzazione non è andata a buon fine.
codice:
e5.9.c:9:2: warning: braces around scalar initializer [enabled by default]
e5.9.c:9:2: warning: (near initialization for ‘daytab’) [enabled by default]
Qualcuno saprebbe aiutarmi?
E inoltre, chi mi può linkare del materiale online dove viene spiegato per bene il discorso sui puntatori?
Grazie mille in anticipo a tutti