|
Διάβαση των δομών στις λειτουργίες στο γ
Τις δομές μπορούν να περάσουν ως παράμετρος σε μια λειτουργία, ακριβώς όπως οποιοιδήποτε από τους βασικούς τύπους στοιχείων. Το ακόλουθο παράδειγμα χρησιμοποιεί μια δομή αποκαλούμενη ημερομηνία που έχει περνούν σε μια λειτουργία isLeapYear για να καθορίσει εάν το έτος είναι ένα έτος πηδήματος.
Κανονικά θα περνούσατε μόνο την αξία ημέρας, αλλά ολόκληρη τη δομή περνούν για να επεξηγήσει τη διάβαση των δομών στις λειτουργίες.
#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;
}
Και η εκτέλεση του προγράμματος θα είναι η ακόλουθη:
Enter the date (eg: 11/11/1980): 9/12/1980
The date 9 December 1980 is a leap year |
|
|