Δομές στο Γ

Structures C



Στο C, μια δομή είναι μια μεταβλητή που ορίζεται από το χρήστη και χρησιμοποιείται για την αποθήκευση μιας συλλογής μεταβλητών κάτω από μία οντότητα. Ας χρησιμοποιήσουμε μια απλή αναλογία για να εξηγήσουμε την εφαρμογή και τη χρησιμότητα των δομών στο C.

Ας υποθέσουμε ότι θέλουμε να αποθηκεύσουμε πληροφορίες σχετικά με τους χρήστες που χρησιμοποιούν μια συγκεκριμένη υπηρεσία. Αυτές οι πληροφορίες μπορεί να περιλαμβάνουν το όνομα χρήστη, το email, τη διεύθυνση, τη λειτουργία υπηρεσίας και άλλα τέτοια. Για να αποθηκεύσουμε τέτοιες πληροφορίες, μπορούμε να συνεχίσουμε να δημιουργούμε κάθε χαρακτηριστικό ως αυτόνομη μεταβλητή. Ωστόσο, όταν έχουμε δέκα συν χρήστες, ο κώδικας μπορεί να ξεφύγει από τον έλεγχο και να γίνει πολύ δύσκολος και κουραστικός για ανάγνωση.







Για να το λύσουμε αυτό, μπορούμε να δημιουργήσουμε μια δομή. Μέσα στη δομή, μπορούμε να αποθηκεύσουμε όλα τα χαρακτηριστικά που μοιράζονται όλοι οι χρήστες και στη συνέχεια να προσθέτουμε μοναδικές μεταβλητές για κάθε χρήστη.



Ας ρίξουμε μια ματιά σε διάφορα παραδείγματα για να δούμε πώς να το εφαρμόσουμε.



Πώς να ορίσετε μια δομή στο Γ

Για να ορίσουμε μια δομή σε C, χρησιμοποιούμε τη λέξη -κλειδί struct ακολουθούμενη από το όνομα της δομής. Μετά το όνομα, έχουμε ένα ζευγάρι σγουρά σιδεράκια όπου προσθέτουμε τα μέλη.





Εξετάστε τη σύνταξη παρακάτω:

δομήstruct_name
{
/ * δεδομένα */
πληκτρολογήστε όνομα_μελους?
πληκτρολογήστε name_name2?
πληκτρολογήστε name_name3?

...
τύποςόνομα_μέλουςN?
}?

Το όνομα της δομής μπορεί να είναι ό, τι θέλετε αρκεί να τηρεί τη σύμβαση ονομασίας της γλώσσας προγραμματισμού C.



Μπορούμε να υλοποιήσουμε μια δομή παραδείγματος της αναλογίας χρηστών ως:

δομήχρήστες
{
απανθρακώνωόνομα χρήστη[είκοσι]?
απανθρακώνωΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ[225]?
απανθρακώνωδιεύθυνση[πενήντα]?
intηλικία?
bool εγγεγραμμένο?
}?

Πώς να δημιουργήσετε μεταβλητές δομής

Υπάρχουν δύο κύριοι τρόποι δημιουργίας μεταβλητών δομής. Το πρώτο είναι να τα δηλώσει σαν κανονικές μεταβλητές και το άλλο είναι να τα ρυθμίσει χρησιμοποιώντας σγουρά στηρίγματα.

Το παρακάτω παράδειγμα δείχνει πώς να δηλώσετε μεταβλητές δομής ως τυπικές μεταβλητές C.

δομήχρήστες
{
απανθρακώνωόνομα χρήστη[είκοσι]?
απανθρακώνωΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ[225]?
απανθρακώνωδιεύθυνση[πενήντα]?
intηλικία?
bool εγγεγραμμένο?
}?

intκύριος(intargc, απανθρακώνω const *argv[])
{
δομήχρήστες user1,χρήστη 2,χρήστη 3
ΕΠΙΣΤΡΟΦΗ 0?
}

Η άλλη μέθοδος δημιουργίας μεταβλητών δομής είναι όπως φαίνεται παρακάτω:

δομήχρήστες
{
απανθρακώνωόνομα χρήστη[είκοσι]?
απανθρακώνωΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ[225]?
απανθρακώνωδιεύθυνση[πενήντα]?
intηλικία?
bool εγγεγραμμένο?
}χρήστης 1,χρήστη 2,χρήστη 3?

Σε αυτό το παράδειγμα, τα δημιουργούμε κατά τη διάρκεια της δήλωσης δομής.

Δομή Αρχή Μέλους

Δεν μπορείτε να προετοιμάσετε τα μέλη της δομής κατά τη δημιουργία, καθώς δεν υπάρχει μνήμη για τον τύπο.

Για να προετοιμάσετε τα μέλη μιας δομής, χρησιμοποιήστε τα σγουρά στηρίγματα όπως φαίνεται παρακάτω:

δομήχρήστες
{
απανθρακώνωόνομα χρήστη[είκοσι]?
απανθρακώνωΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ[225]?
απανθρακώνωδιεύθυνση[πενήντα]?
intηλικία?
bool εγγεγραμμένο?
}?
intκύριος(intargc, απανθρακώνω const *argv[])
{
δομήχρήστες user1= {'myusername', '[email protected]', 35, αληθής}
ΕΠΙΣΤΡΟΦΗ 0?
}

Πρόσβαση στα μέλη της δομής

Για πρόσβαση στα μέλη μιας δομής, χρησιμοποιούμε τον τελεστή τελείας, ξεκινώντας από το όνομα της δομής, μια τελεία και το όνομα του μέλους.

δομήχρήστες
{
απανθρακώνωόνομα χρήστη[είκοσι]?
απανθρακώνωΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ[225]?
απανθρακώνωδιεύθυνση[πενήντα]?
intηλικία?
bool εγγεγραμμένο?
}?
intκύριος(intargc, απανθρακώνω const *argv[])
{
δομήχρήστες user1= {'myusername', '[email protected]', 35, αληθής}
χρήστης 1.ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ = '[email protected]'
ΕΠΙΣΤΡΟΦΗ 0?
}

Σε αυτό το παράδειγμα, έχουμε πρόσβαση στα μέλη του χρήστη1.

Λέξη -κλειδί Typedef

Χρησιμοποιούμε τη λέξη -κλειδί typedef για να δημιουργήσουμε ένα ψευδώνυμο για τους τύπους δεδομένων, καθιστώντας τον κώδικα πιο ευανάγνωστο.

Για παράδειγμα:

typedef δομήχρήστες
{
απανθρακώνωόνομα χρήστη[είκοσι]?
απανθρακώνωΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ[225]?
απανθρακώνωδιεύθυνση[πενήντα]?
intηλικία?
bool εγγεγραμμένο?
}u?
intκύριος(intargc, απανθρακώνω const *argv[])
{
u χρήστης 1= {'myusername', '[email protected]', 35, αληθής}
χρήστης 1.εγγεγραμμένος = ψευδής
ΕΠΙΣΤΡΟΦΗ 0?
}

Στο παραπάνω παράδειγμα, δημιουργήσαμε ένα ψευδώνυμο u για τη δομή των χρηστών. Επομένως, δεν χρειάζεται να καλούμε τους χρήστες του struct κάθε φορά. Μπορούμε να χρησιμοποιήσουμε το u όπως ορίζεται παραπάνω.

Δείκτες δείκτες

Μπορείτε επίσης να έχετε έναν δείκτη σε μια δομή. Αυτό σας επιτρέπει να έχετε πρόσβαση στα μέλη χρησιμοποιώντας τον τελεστή ->.

Για παράδειγμα:

typedef δομήχρήστες
{
απανθρακώνωόνομα χρήστη[είκοσι]?
απανθρακώνωΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ[225]?
απανθρακώνωδιεύθυνση[πενήντα]?
intηλικία?
bool εγγεγραμμένο?
}u?
intκύριος(intargc, απανθρακώνω const *argv[])
{
u χρήστης 1= {'myusername', '[email protected]', 35, αληθής}

// δείκτης σε άλλη δομή
u*user_ptr= &χρήστης 1
user_ptr->όνομα χρήστη= 'ptrusername'
ΕΠΙΣΤΡΟΦΗ 0?
}

συμπέρασμα

Αυτός ο οδηγός καλύπτει τα βασικά της εργασίας με δομές στη γλώσσα προγραμματισμού C.

Ευχαριστούμε που το διαβάσατε!