|
Passando le strutture alle funzioni in C
Le strutture possono essere passate come parametro ad una funzione, appena come c'è ne dei tipi di dati di base. Il seguente esempio usa una struttura denominata data che ha è passata ad una funzione isLeapYear per determinare se l'anno è un anno di salto.
Passereste normalmente soltanto il valore di giorno, ma la struttura intera è passata per illustrare passare le strutture alle funzioni.
#include <stdio.h>
#include <string.h>
struct month
{
char *name;
char *abbreviation;
int days;
} month_details[] =
{
"Junk", "Junk", 0,
"January", "Jan", 31,
"February", "Feb", 28,
"March", "Mar", 31,
"April", "Apr", 30,
"May", "May", 31,
"June", "Jun", 30,
"July", "Jul", 31,
"August", "Aug", 31,
"September", "Sep", 30,
"October", "Oct", 31,
"November", "Nov", 30,
"December", "Dec", 31
};
struct date
{
int day;
int month;
int year;
};
int isLeapYear(struct date d);
int main()
{
struct date d;
printf("Enter the date (eg: 11/11/1980): ");
scanf("%d/%d/%d", &d.day, &d.month, &d.year);
printf("The date %d %s %d is ", d.day,
month_details[d.month].name, d.year);
if (isLeapYear(d) == 0)
printf("not ");
puts("a leap year");
return 0;
}
int isLeapYear(struct date d)
{
if ((d.year % 4 == 0 && d.year % 100 != 0) ||
d.year % 400 == 0)
return 1;
return 0;
}
E l'esecuzione del programma sarà come segue:
Enter the date (eg: 11/11/1980): 9/12/1980
The date 9 December 1980 is a leap year |
|
|