Πίνακας περιεχομένων:
Βίντεο: Προγραμματισμός με Unity3D : Βασικά Στοιχεία 2024
Μπορείτε να σκεφτείτε τη δομή της γλώσσας προγραμματισμού C ως πολλαπλών μεταβλητών, ή μερικές μεταβλητές σε μία. Χρησιμοποιείτε δομές για την αποθήκευση ή την πρόσβαση σε πολύπλοκες πληροφορίες. Με αυτόν τον τρόπο, μπορείτε να διατηρήσετε διάφορες μεταβλητές int, char, float, ακόμα και συστοιχίες, όλες σε ένα πακέτο.
Βασικά στοιχεία struct
Μια δομή δεν είναι μεταβλητός τύπος. Αντ 'αυτού, σκεφτείτε το ως ένα πλαίσιο που περιέχει πολλαπλούς τύπους μεταβλητών. Με πολλούς τρόπους, μια δομή είναι παρόμοια με μια εγγραφή σε μια βάση δεδομένων. Για παράδειγμα:
Όνομα Χρέος Τυχερών Παιχνιδιών
Αυτά τα τρία στοιχεία μπορούν να είναι πεδία σε αρχείο βάσης δεδομένων, αλλά μπορούν επίσης να είναι μέλη σε μια δομή: Το όνομα θα είναι μια συμβολοσειρά. Ηλικία, ένας ακέραιος αριθμός. και το χρέος τζόγου, μια αξία υποδιαστολής με κινητά. Εδώ είναι πώς ένα τέτοιο αρχείο θα φαινόταν ως δομή στο C:
struct record {char name [32]; int age? float χρέος?}?
struct είναι μια λέξη-κλειδί γλώσσας C που εισάγει, ορίζει ή δημιουργεί μια νέα δομή.
είναι το όνομα της νέας δομής που δημιουργείται.
Μέσα στα στρογγυλά άγκιστρα παραμένουν τα μέλη της δομής, οι μεταβλητές που περιέχονται στη δομή που ονομάζεται. Ο τύπος δομής εγγραφής περιέχει τρεις μεταβλητές μέλη: ένα όνομα συμβολοσειράς, μια ονομαστική ηλικία int και μια τιμή float, χρέος.
Για να χρησιμοποιήσετε τη δομή, πρέπει να δηλώσετε μια μεταβλητή δομής του τύπου δομής που δημιουργήσατε. Για παράδειγμα:
δομή καταγραφή ανθρώπου?
Αυτή η γραμμή δηλώνει μια νέα μεταβλητή του τύπου της δομής εγγραφής. Η νέα μεταβλητή ονομάζεται ανθρώπινη .
Οι μεταβλητές δομής μπορούν επίσης να δηλωθούν όταν καθορίζετε την ίδια τη δομή. Για παράδειγμα:
record record {char name [32]; int age? float χρέος ·} άνθρωπος?
Αυτές οι δηλώσεις ορίζουν τη δομή εγγραφής και δηλώνουν μια μεταβλητή δομής εγγραφής, ανθρώπινη . Μπορούν επίσης να δημιουργηθούν πολλές μεταβλητές αυτού του τύπου δομής:
record record {char name [32]; int age? float χρέος ·} νομοσχέδιο, mary, dan, susie?
Στο παράδειγμα αυτό δημιουργούνται τέσσερις μεταβλητές δομής εγγραφής. Κάθε μεταβλητή έχει πρόσβαση στα τρία μέλη που ορίζονται στη δομή.
Για να έχετε πρόσβαση σε μέλη σε μια μεταβλητή δομής, χρησιμοποιείτε μια περίοδο, η οποία είναι ο χειριστής-μέλος . Συνδέει το όνομα μεταβλητής δομής με ένα όνομα μέλους. Για παράδειγμα:
printf ("Θύμα:% sn", όνομα λογαριασμού);
Αυτή η δήλωση αναφέρει το μέλος όνομα στη μεταβλητή δομής . Μια συστοιχία χαρακτήρων, μπορεί να χρησιμοποιηθεί στον κώδικα σας όπως και κάθε άλλη συστοιχία char. Άλλα μέλη της μεταβλητής δομής μπορούν να χρησιμοποιηθούν όπως και τα μεμονωμένα αντίστοιχά τους:
dan.ηλικία = 32;
Πώς να γεμίσετε μια δομή
Όπως και με άλλες μεταβλητές, μπορείτε να αντιστοιχίσετε τιμές σε μια μεταβλητή δομής όταν δημιουργηθεί. Πρέπει πρώτα να καθορίσετε τον τύπο δομής και στη συνέχεια να δηλώσετε μια μεταβλητή δομής με τις προκαθορισμένες τιμές μελών. Βεβαιωθείτε ότι οι προκαθορισμένες τιμές ταιριάζουν με τη σειρά και τον τύπο των μελών που ορίζονται στη δομή, όπως φαίνεται στο Δηλώνοντας μία αρχικοποιημένη δομή.
ΔΗΛΩΣΗ ΙΣΤΟΡΙΚΗΣ ΔΟΜΗΣ
#include int main () {struct president {όνομα char [40]; int year}}. ο πρώτος πρόεδρος = {"George Washington", 1789}. printf ("Ο πρώτος πρόεδρος ήταν% sn", πρώτο όνομα); printf ("Εγκαινιάστηκε στο% dn", πρώτο έτος)? επιστροφή (0)?}
Άσκηση 1 : Δημιουργήστε ένα νέο πρόγραμμα πληκτρολογώντας τον πηγαίο κώδικα από την Δηλωση αρχικοποιημένης δομής στον επεξεργαστή. Κατασκευάστε και τρέξτε.
Μπορείτε επίσης να δηλώσετε μια δομή και να την αρχικοποιήσετε σε μία δήλωση:
struct president {όνομα char [40]; int έτος}} πρώτα = {"George Washington", 1789}?
Άσκηση 2 : Τροποποιήστε τον πηγαίο κώδικα από την Άσκηση 1 έτσι ώστε η δομή και η μεταβλητή να δηλωθούν και να αρχικοποιηθούν ως μία δήλωση.
Παρόλο που μπορείτε να δηλώσετε μια δομή και να αρχίσετε μια μεταβλητή δομής όπως φαίνεται μόλις, μπορείτε να ξεφύγετε με αυτό το τέχνα μόνο μία φορά. Δεν μπορείτε να χρησιμοποιήσετε την τεχνική για να δηλώσετε τη δεύτερη μεταβλητή της δομής, η οποία πρέπει να γίνει με τον παραδοσιακό τρόπο, όπως φαίνεται στο Δηλώνοντας μία αρχικοποιημένη δομή.
Άσκηση 3 : Προσθέστε μια άλλη μεταβλητή δομής προέδρου στον κωδικό σας, αρχικοποιώντας αυτή τη δομή με πληροφορίες για τον δεύτερο πρόεδρο John Adams, ο οποίος εγκαινιάστηκε το 1797. Εμφάνιση των περιεχομένων και των δύο δομών.
Πώς να φτιάξετε μια σειρά δομών
Η δημιουργία μεταβλητών ατομικής δομής, το ένα μετά το άλλο, είναι τόσο βαρετή και σπάταλη όσο δημιουργεί μια σειρά οποιουδήποτε μεμονωμένου μεταβλητού τύπου. Η λύση για πολλές δομές είναι η ίδια με αυτή για πολλαπλές μεμονωμένες μεταβλητές: μια συστοιχία.
Ο πίνακας δομών δηλώνεται ως εξής:
struct scores player [4];
Αυτή η δήλωση δηλώνει μια σειρά δομών σκορ. Ο πίνακας ονομάζεται παίκτης και περιέχει τέσσερις μεταβλητές δομής ως στοιχεία του.
Οι δομές στη συστοιχία προσπελάστηκαν χρησιμοποιώντας έναν συνδυασμό συστοιχίας και δομής. Για παράδειγμα:
player [2]. όνομα
Η μεταβλητή στην προηγούμενη γραμμή προσεγγίζει το μέλος ονόματος στο τρίτο στοιχείο της συστοιχίας δομών αναπαραγωγής. Ναι, αυτό είναι το τρίτο στοιχείο, επειδή το πρώτο στοιχείο θα αναφέρεται ως εξής:
παίκτης [0]. όνομα
Αρχίζει η αρίθμηση με το στοιχείο 0, όχι με το στοιχείο 1.
Η γραμμή 10 σε Arrays of Structures δηλώνει μια σειρά τεσσάρων δομών βαθμολογίας. Ο πίνακας ονομάζεται παίκτης. Οι γραμμές 13 έως 19 πληρούν κάθε δομή στη συστοιχία. Οι γραμμές 21 έως 27 εμφανίζουν τις τιμές μελών κάθε δομής.
ΚΑΛΛΙΕΡΓΕΙΕΣ ΔΟΜΩΝ
#include int main () {δομήματα {char όνομα [32]; int βαθμολογία;}; struct scores player [4]. int x; για το (x = 0; x <4; x ++) {printf ("Εισάγετε τον παίκτη% d:", x + 1); scanf ("% s", παίκτης [x].όνομα); printf ("Εισάγετε το σκορ:"); Σάρωση ("% d", & player [x].))}} ("Πληροφορίες παίκτη"). printf ("# tNametScoren"); (x = 0, x <4, x ++) {printf ("% dt% st% 5dn", x + 1, player [x].
Άσκηση 4 : Πληκτρολογήστε τον πηγαίο κώδικα από Arrays of Structures στον επεξεργαστή σας. Δημιουργήστε και εκτελέστε το πρόγραμμα. Προσπαθήστε να κρατήσετε τα αποτελέσματα σε λιγότερα από πέντε ψηφία, ώστε να ταξινομηθούν σωστά.
Άσκηση 5 : Προσθέστε κώδικα σε Arrays of Structures έτσι ώστε η εμφάνιση δομών να ταξινομείται με την υψηλότερη βαθμολογία που αναφέρεται πρώτα. Ναι, μπορείτε να το κάνετε αυτό. Η ταξινόμηση μιας σειράς δομών λειτουργεί ακριβώς όπως τη διαλογή οποιουδήποτε άλλου πίνακα.
Ακολουθεί μια υπαινιγμός: Η γραμμή 27 της λύσης μοιάζει με αυτή:
παίκτης [a] = παίκτης [b];
Μπορείτε να ανταλλάξετε στοιχεία συστοιχίας δομών ακριβώς όπως μπορείτε να ανταλλάξετε οποιαδήποτε στοιχεία πίνακα. Δεν χρειάζεται να ανταλλάξετε τα μέλη της μεταβλητής δομής.