Τι είναι η δομή;
Η δομή είναι ένας καθορισμένος από τον χρήστη τύπος δεδομένων σε γλώσσα προγραμματισμού Γ που συνδυάζει λογικά στοιχεία δεδομένων διαφορετικών τύπων δεδομένων μαζί.
Όλα τα στοιχεία δομής αποθηκεύονται σε γειτονικές θέσεις μνήμης. Η μεταβλητή τύπου δομής μπορεί να αποθηκεύσει περισσότερα από ένα στοιχεία δεδομένων διαφορετικών τύπων δεδομένων με ένα όνομα.
Σε αυτό το σεμινάριο, θα μάθετε:
- Τι είναι η δομή;
- Τι είναι η Ένωση
- Σύνταξη Δήλωσης Δομής
- Παράδειγμα δομής στον προγραμματισμό Γ
- Σύνταξη της Ένωσης δήλωσης
- Παράδειγμα Ένωσης στον προγραμματισμό Γ
- Δομή Vs. Ενωση
- Πλεονεκτήματα της δομής
- Πλεονεκτήματα της ένωσης
- Μειονεκτήματα της δομής
- Μειονεκτήματα της ένωσης
Τι είναι η Ένωση
Το Union είναι ένας τύπος δεδομένων που καθορίζεται από τον χρήστη, ακριβώς όπως μια δομή. Το Union συνδυάζει αντικείμενα διαφορετικών τύπων και μεγεθών. Η μεταβλητή συνάθροισης εκχωρεί το χώρο μνήμης ίσο με το διάστημα για τη διατήρηση της μεγαλύτερης μεταβλητής συνένωσης. Επιτρέπει σε διάφορους τύπους αντικειμένων να μοιράζονται την ίδια τοποθεσία.
Σύνταξη Δήλωσης Δομής
struct [name of the structure]{type member1;type member2;type member3;};
Η δομή δηλώνεται χρησιμοποιώντας τη λέξη-κλειδί "struct" και το όνομα της δομής. Ο αριθμός 1, ο αριθμός 2, ο αριθμός 3 είναι μεμονωμένα μέλη της δομής. Το μέρος του σώματος τερματίζεται με ερωτηματικό (;).
Παράδειγμα δομής στον προγραμματισμό Γ
#includestruct student {char name[60];int roll_no;float marks;} sdt;int main() {printf("Enter the following information:\n");printf("Enter student name: ");fgets(sdt.name, sizeof(sdt.name), stdin);printf("Enter student roll number: ");scanf("%d", & sdt. roll_no);printf("Enter students marks: ");scanf("%f", & sdt.marks);printf("The information you have entered is: \n");printf("Student name: ");printf("%s", sdt.name);printf("Student roll number: %d\n", sdt. roll_no);printf("Student marks: %.1f\n", sdt.marks);return 0;}
Στο παραπάνω πρόγραμμα, δημιουργείται μια δομή που ονομάζεται μαθητής. Αυτή η δομή έχει τρία μέλη δεδομένων: 1) όνομα (συμβολοσειρά), 2) roll_no (ακέραιος) και 3) σημάδια (float).
Μετά από αυτό, δημιουργείται μια μεταβλητή δομής sdt για την αποθήκευση πληροφοριών μαθητή και την εμφάνισή τους στην οθόνη του υπολογιστή.
Παραγωγή:
Εισαγάγετε τις ακόλουθες πληροφορίες:
Εισαγάγετε το όνομα του μαθητή: James
Εισαγάγετε τον αριθμό του μαθητή: 21
Εισαγάγετε μαθητές: 67
Οι πληροφορίες που έχετε εισαγάγει είναι:
Όνομα μαθητή: John
Αριθμός μαθητή: 21
Σήματα μαθητή: 67.0
Σύνταξη της Ένωσης δήλωσης
union [name of union]{type member1;type member2;type member3;};
Η ένωση δηλώνεται χρησιμοποιώντας τη λέξη-κλειδί "ένωση" και το όνομα της ένωσης. Ο αριθμός 1, ο αριθμός 2, ο αριθμός 3 είναι μεμονωμένα μέλη της ένωσης. Το μέρος του σώματος τερματίζεται με ερωτηματικό (;).
Παράδειγμα Ένωσης στον προγραμματισμό Γ
#includeunion item{int x;float y;char ch;};int main( ){union item it;it.x = 12;it.y = 20.2;it.ch = 'a';printf("%d\n", it.x);printf("%f\n", it.y);printf("%c\n", it.ch);return 0;}
Παραγωγή:
1101109601
20.199892
ένα
Στο παραπάνω πρόγραμμα, μπορείτε να δείτε ότι οι τιμές των x και y καταστρέφονται. Μόνο η μεταβλητή ch εκτυπώνει το αναμενόμενο αποτέλεσμα. Επειδή, στην ένωση, η θέση μνήμης μοιράζεται μεταξύ όλων των τύπων δεδομένων μελών.
Επομένως, το μόνο μέλος δεδομένων του οποίου η τιμή είναι αποθηκευμένη αυτήν τη στιγμή, θα καταλαμβάνει χώρο μνήμης. Η τιμή της μεταβλητής ch αποθηκεύτηκε επιτέλους, οπότε η τιμή των υπόλοιπων μεταβλητών χάνεται.
Δομή Vs. Ενωση
Εδώ είναι η σημαντική διαφορά μεταξύ δομής και ένωσης:
Δομή | Ενωση |
Μπορείτε να χρησιμοποιήσετε μια λέξη-κλειδί struct για να ορίσετε μια δομή. | Μπορείτε να χρησιμοποιήσετε μια λέξη-κλειδί ένωσης για να ορίσετε μια ένωση. |
Σε κάθε μέλος της δομής εκχωρείται μια μοναδική θέση μνήμης. | Στην ένωση, μια θέση μνήμης κοινοποιείται από όλα τα μέλη των δεδομένων. |
Η αλλαγή της τιμής ενός μέλους δεδομένων δεν θα επηρεάσει άλλα μέλη δεδομένων στη δομή. | Η αλλαγή της τιμής ενός μέλους δεδομένων θα αλλάξει την αξία των άλλων μελών δεδομένων στην ένωση. |
Σας επιτρέπει να προετοιμάσετε πολλά μέλη ταυτόχρονα. | Σας επιτρέπει να προετοιμάσετε μόνο το πρώτο μέλος της ένωσης. |
Το συνολικό μέγεθος της δομής είναι το άθροισμα του μεγέθους κάθε μέλους δεδομένων. | Το συνολικό μέγεθος της ένωσης είναι το μέγεθος του μεγαλύτερου μέλους δεδομένων. |
Χρησιμοποιείται κυρίως για την αποθήκευση διαφόρων τύπων δεδομένων. | Χρησιμοποιείται κυρίως για την αποθήκευση ενός από τους πολλούς τύπους δεδομένων που είναι διαθέσιμοι. |
Καταλαμβάνει χώρο για κάθε μέλος γραμμένο σε εσωτερικές παραμέτρους. | Καταλαμβάνει χώρο για ένα μέλος που έχει το υψηλότερο μέγεθος γραμμένο σε εσωτερικές παραμέτρους. |
Μπορείτε να ανακτήσετε οποιοδήποτε μέλος κάθε φορά. | Μπορείτε να έχετε πρόσβαση σε ένα μέλος κάθε φορά στην ένωση. |
Υποστηρίζει ευέλικτη συστοιχία. | Δεν υποστηρίζει μια ευέλικτη συστοιχία. |
Πλεονεκτήματα της δομής
Ακολουθούν τα πλεονεκτήματα / οφέλη για τη χρήση της δομής:
- Οι δομές συλλέγουν περισσότερα από ένα κομμάτια δεδομένων για το ίδιο θέμα μαζί στο ίδιο μέρος.
- Είναι χρήσιμο όταν θέλετε να συλλέξετε τα δεδομένα παρόμοιων τύπων δεδομένων και παραμέτρων όπως το όνομα, το επώνυμο κ.λπ.
- Είναι πολύ εύκολο να διατηρηθεί καθώς μπορούμε να αντιπροσωπεύσουμε ολόκληρο το δίσκο χρησιμοποιώντας ένα μόνο όνομα.
- Στη δομή, μπορούμε να περάσουμε πλήρες σύνολο εγγραφών σε οποιαδήποτε λειτουργία χρησιμοποιώντας μία μόνο παράμετρο.
- Μπορείτε να χρησιμοποιήσετε μια σειρά δομών για να αποθηκεύσετε περισσότερες εγγραφές με παρόμοιους τύπους.
Πλεονεκτήματα της ένωσης
Εδώ είναι τα πλεονεκτήματα / οφέλη για τη χρήση της ένωσης:
- Καταλαμβάνει λιγότερη μνήμη σε σύγκριση με τη δομή.
- Όταν χρησιμοποιείτε το συνδικάτο, μπορείτε να έχετε απευθείας πρόσβαση στην τελευταία μεταβλητή.
- Το Union χρησιμοποιείται όταν πρέπει να χρησιμοποιήσετε την ίδια θέση μνήμης για δύο ή περισσότερα μέλη δεδομένων.
- Σας επιτρέπει να κρατάτε δεδομένα μόνο ενός μέλους δεδομένων.
- Ο εκχωρημένος χώρος του είναι ίσος με το μέγιστο μέγεθος του μέλους δεδομένων.
Μειονεκτήματα της δομής
Ακολουθούν τα μειονεκτήματα / μειονεκτήματα για τη χρήση της δομής:
- Εάν η πολυπλοκότητα του έργου ΤΠ υπερβαίνει το όριο, γίνεται δύσκολο να διαχειριστεί κανείς.
- Η αλλαγή μιας δομής δεδομένων σε έναν κώδικα απαιτεί αλλαγές σε πολλά άλλα μέρη. Επομένως, οι αλλαγές γίνονται δύσκολο να εντοπιστούν.
- Η δομή είναι πιο αργή επειδή απαιτεί χώρο αποθήκευσης για όλα τα δεδομένα.
- Μπορείτε να ανακτήσετε οποιοδήποτε μέλος κάθε φορά στη δομή, ενώ μπορείτε να έχετε πρόσβαση σε ένα μέλος κάθε φορά στην ένωση.
- Η δομή καταλαμβάνει χώρο για κάθε μέλος γραμμένο σε εσωτερικές παραμέτρους ενώ η ένωση καταλαμβάνει χώρο για ένα μέλος που έχει το υψηλότερο μέγεθος γραμμένο σε εσωτερικές παραμέτρους.
- Η δομή υποστηρίζει εύκαμπτο πίνακα. Το Union δεν υποστηρίζει μια ευέλικτη συστοιχία.
Μειονεκτήματα της ένωσης
Εδώ είναι τα μειονεκτήματα / μειονεκτήματα για τη χρήση ένωσης:
- Μπορείτε να χρησιμοποιήσετε μόνο ένα μέλος της ένωσης κάθε φορά.
- Όλες οι μεταβλητές ένωσης δεν μπορούν να αρχικοποιηθούν ή να χρησιμοποιηθούν με διαφορετικές τιμές κάθε φορά.
- Η Union εκχωρεί έναν κοινό χώρο αποθήκευσης για όλα τα μέλη της.
ΒΑΣΙΚΕΣ ΔΙΑΦΟΡΕΣ:
- Σε κάθε μέλος στη δομή εκχωρείται μια μοναδική θέση μνήμης ενώ στην ένωση μοιράζεται μια θέση μνήμης από όλα τα μέλη δεδομένων.
- Η αλλαγή της τιμής ενός μέλους δεδομένων δεν θα επηρεάσει άλλα μέλη δεδομένων στη δομή, ενώ η αλλαγή της τιμής ενός μέλους δεδομένων θα αλλάξει την αξία των άλλων μελών δεδομένων στην ένωση.
- Η δομή χρησιμοποιείται κυρίως για την αποθήκευση διαφόρων τύπων δεδομένων, ενώ η ένωση χρησιμοποιείται κυρίως για την αποθήκευση ενός από τους πολλούς τύπους δεδομένων.
- Στη δομή, μπορείτε να ανακτήσετε οποιοδήποτε μέλος κάθε φορά από την άλλη πλευρά σε ένωση, μπορείτε να έχετε πρόσβαση σε ένα μέλος κάθε φορά.
- Η δομή υποστηρίζει εύκαμπτη συστοιχία ενώ η ένωση δεν υποστηρίζει μια ευέλικτη συστοιχία.