|
Dépassement des structures aux fonctions dans C
Des structures peuvent être passées comme paramètre à une fonction, juste comme les types de données de base l'uns des. L'exemple suivant emploie une structure appelée la date qui a est passée à une fonction isLeapYear pour déterminer si l'année est une année bissextile.
Normalement vous passeriez seulement la valeur de jour, mais la structure entière est passée pour illustrer passer des structures aux fonctions.
#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;
}
Et l'exécution du programme sera comme suit :
Enter the date (eg: 11/11/1980): 9/12/1980
The date 9 December 1980 is a leap year |
|
|