Καθορίζοντας τη δομή, μπορείτε να δηλώσετε μια περίπτωση από το και να ορίσετε τις τιμές στα μέλη χρησιμοποιώντας τη σημείωση σημείων. Το ακόλουθο παράδειγμα επεξηγεί τη χρήση της δομής μήνα.
#include <stdio.h>
#include <string.h>
struct month
{
char name[10];
char abbreviation[4];
int days;
};
int main()
{
struct month m;
strcpy(m.name, "January");
strcpy(m.abbreviation, "Jan");
m.days = 31;
printf("%s is abbreviated as %s and has %d days\n", m.name, m.abbreviation, m.days);
return 0;
}
Η παραγωγή του προγράμματος θα είναι η ακόλουθη:
January is abbreviated as Jan and has 31 days |
Όλοι οι μεταγλωττιστές Ansi γ επιτρέπουν σε σας για να ορίσουν μια δομή σε άλλη, που εκτελεί ένα μέλος-σοφό αντίγραφο. Εάν καλέσαμε τις δομές μήνα m1 και τετρ.μέτρο, κατόπιν θα μπορούσαμε να ορίσουμε τις τιμές από m1 στο τετρ.μέτρο με τον ακόλουθο:
- Δομή με τα μέλη δεικτών.
- Η δομή μονογράφει.
- Διάβαση μιας δομής σε μια λειτουργία.
- Δείκτες και δομές.
Δομές με τα μέλη δεικτών στο γ
Οι σειρές εκμετάλλευσης σε μια σταθερή σειρά μεγέθους είναι ανεπαρκής χρήση της μνήμης. Μια αποδοτικότερη προσέγγιση θα ήταν να χρησιμοποιηθούν οι δείκτες. Οι δείκτες χρησιμοποιούνται στις δομές με ακριβώς τον ίδιο τρόπο που χρησιμοποιούνται στους κανονικούς ορισμούς δεικτών. Δείτε ένα παράδειγμα:
#include <string.h>
#include <malloc.h>
struct month
{
char *name;
char *abbreviation;
int days;
};
int main()
{
struct month m;
m.name = (char *)malloc((strlen("January")+1) *
sizeof(char));
strcpy(m.name, "January");
m.abbreviation = (char *)malloc((strlen("Jan")+1) *
sizeof(char));
strcpy(m.abbreviation, "Jan");
m.days = 31;
printf("%s is abbreviated as %s and has %d days\n",
m.name, m.abbreviation, m.days);
return 0;
}
Η παραγωγή του προγράμματος θα είναι η ακόλουθη:
January is abbreviated as Jan and has 31 days |
|