C++ Δομή με Παράδειγμα

Τι είναι ένα Struc in C++?

A STRUCT είναι ένα C++ δομή δεδομένων που μπορεί να χρησιμοποιηθεί για την αποθήκευση στοιχείων διαφορετικών τύπων δεδομένων. Σε C++, μια δομή είναι ένας τύπος δεδομένων που ορίζεται από το χρήστη. Η δομή δημιουργεί έναν τύπο δεδομένων για την ομαδοποίηση στοιχείων διαφορετικών τύπων δεδομένων κάτω από έναν μόνο τύπο δεδομένων.

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

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

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

Πότε να χρησιμοποιήσετε μια Δομή;

Ακολουθούν μερικοί λόγοι που χρησιμοποιούν τη δομή στο C++.

  • Χρησιμοποιήστε μια δομή όταν χρειάζεται να αποθηκεύσετε στοιχεία διαφορετικών τύπων δεδομένων κάτω από έναν τύπο δεδομένων.
  • C++ Οι δομές είναι τύπος τιμής αντί να είναι τύπος αναφοράς. Χρησιμοποιήστε μια δομή εάν δεν σκοπεύετε να τροποποιήσετε τα δεδομένα σας μετά τη δημιουργία.

C++ Αρχικοποίηση δομών

Για να δημιουργήσετε ένα C++ δομή, χρησιμοποιούμε τη λέξη-κλειδί struct, ακολουθούμενη από ένα αναγνωριστικό. Το αναγνωριστικό γίνεται το όνομα της δομής. Εδώ είναι η σύνταξη για τη δημιουργία του a C++ δομή:

Σύνταξη:

struct struct_name  
{  
     // struct members
}   

Στην παραπάνω σύνταξη, χρησιμοποιήσαμε τη λέξη-κλειδί struct. Το struct_name είναι το όνομα της δομής.

Τα μέλη της δομής προστίθενται μέσα σε σγουρά σιδεράκια. Αυτά τα μέλη πιθανότατα ανήκουν σε διαφορετικούς τύπους δεδομένων.

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

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

Στο παραπάνω παράδειγμα, το Person είναι μια δομή με τρία μέλη. Τα μέλη περιλαμβάνουν όνομα, υπηκοότητα και ηλικία. Ένα μέλος είναι τύπου δεδομένων char, ενώ τα υπόλοιπα 2 είναι ακέραιοι όταν δημιουργείται μια δομή, η μνήμη δεν εκχωρείται. Η μνήμη εκχωρείται μόνο αφού προστεθεί μια μεταβλητή στη δομή.

Δημιουργία δομών

Στο παραπάνω παράδειγμα, δημιουργήσαμε μια δομή με το όνομα Person. Μπορούμε να δημιουργήσουμε μια μεταβλητή δομής ως εξής:

Person p;

Το p είναι μια μεταβλητή δομής τύπου Person. Μπορούμε να χρησιμοποιήσουμε αυτή τη μεταβλητή για πρόσβαση στα μέλη της δομής.

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

Για να αποκτήσουμε πρόσβαση στα μέλη της δομής, χρησιμοποιούμε την παρουσία της δομής και τον τελεστή τελείας (.). Για παράδειγμα, για να αποκτήσετε πρόσβαση στην ηλικία μέλους του struct Person:

p.age = 27;

Έχουμε πρόσβαση στην ηλικία μέλους του struct Person χρησιμοποιώντας το παράδειγμα του struct, σελ. Στη συνέχεια, ορίσαμε την τιμή της ηλικίας μέλους στα 27.

Παράδειγμα 1:

#include <iostream>    
using namespace std;
struct Person
{
	int citizenship;
	int age;
};
int main(void) {
	struct Person p;
	p.citizenship = 1;
	p.age = 27;
	cout << "Person citizenship: " << p.citizenship << endl;
	cout << "Person age: " << p.age << endl;

	return 0;
}

Παραγωγή:

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

Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:

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

Επεξήγηση κώδικα:

  1. Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμά μας για να χρησιμοποιήσετε τις λειτουργίες που ορίζονται σε αυτό.
  2. Συμπεριλάβετε τον χώρο ονομάτων std για να χρησιμοποιήσετε τις κλάσεις του χωρίς να τον καλέσετε.
  3. Δημιουργήστε μια δομή με το όνομα Person.
  4. Η αρχή του σώματος της κατασκευής.
  5. Δημιουργήστε ένα μέλος δομής με το όνομα ιθαγένεια τύπου integer.
  6. Δημιουργήστε ένα μέλος δομής με το όνομα age of type integer.
  7. Τέλος του σώματος της κατασκευής.
  8. Καλέστε τη συνάρτηση main(). Η λογική του προγράμματος πρέπει να προστεθεί στο σώμα αυτής της συνάρτησης.
  9. Δημιουργήστε ένα παράδειγμα της δομής Person και δώστε της το όνομα p.
  10. Ορίστε την τιμή της υπηκοότητας μέλους της δομής σε 1.
  11. Ορίστε την τιμή της ηλικίας μέλους της δομής σε 27.
  12. Εκτυπώστε την τιμή της υπηκοότητας μέλους της δομής στην κονσόλα μαζί με κάποιο άλλο κείμενο.
  13. Εκτυπώστε την τιμή της ηλικίας μέλους της δομής στην κονσόλα μαζί με κάποιο άλλο κείμενο.
  14. Το πρόγραμμα θα πρέπει να επιστρέψει μια τιμή εάν εκτελείται με επιτυχία.
  15. Τέλος της συνάρτησης main().

Δείκτες για τη δομή

Είναι δυνατό να δημιουργηθεί ένας δείκτης που οδηγεί σε μια δομή. Είναι παρόμοιο με το πώς δημιουργούνται οι δείκτες που δείχνουν σε εγγενείς τύπους δεδομένων όπως int, float, double, κ.λπ. Σημειώστε ότι ένας δείκτης μέσα C++ θα αποθηκεύσει μια θέση μνήμης.

Παράδειγμα 2:

#include <iostream>
using namespace std;

struct Length
{
	int meters;
	float centimeters;
};

int main()
{
	Length *ptr, l;

	ptr = &l;

	cout << "Enter meters: ";
	cin >> (*ptr).meters;
	cout << "Enter centimeters: ";
	cin >> (*ptr).centimeters;
	cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";

	return 0;
}

Παραγωγή:

Δείκτες για τη δομή

Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:

Δείκτες για τη δομή

Επεξήγηση κώδικα:

  1. Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο πρόγραμμά μας για να χρησιμοποιήσετε τις λειτουργίες του.
  2. Συμπεριλάβετε τον χώρο ονομάτων std στο πρόγραμμά μας για να χρησιμοποιήσετε τις κλάσεις του χωρίς να τον καλέσετε.
  3. Δημιουργήστε μια δομή με το όνομα Length.
  4. Έναρξη του σώματος της κατασκευής Μήκος.
  5. Δημιουργήστε ένα μέλος δομής με το όνομα μέτρα ακέραιου τύπου δεδομένων.
  6. Δημιουργήστε ένα μέλος δομής με όνομα εκατοστά τύπου ακέραιος.
  7. Απόληξη του σώματος της κατασκευής Μήκος.
  8. Καλέστε τη συνάρτηση main().
  9. Έναρξη του σώματος της συνάρτησης main().
  10. Δημιουργήστε μια μεταβλητή δείκτη *ptr και μια κανονική μεταβλητή l τύπου Length.
  11. Αποθηκεύστε τη διεύθυνση της μεταβλητής l στο δικό μας μεταβλητή δείκτη.
  12. Εμφανίστε ένα μήνυμα στην κονσόλα, ζητώντας από τον χρήστη να εισαγάγει την τιμή για τους μεταβλητούς μετρητές.
  13. Διαβάστε την τιμή που εισήγαγε ο χρήστης μέσω του πληκτρολογίου. Η πρόσβαση στους μετρητές συνάρτησης μέλους γίνεται εδώ χρησιμοποιώντας τη μεταβλητή δείκτη.
  14. Εμφανίστε ένα μήνυμα στην κονσόλα, ζητώντας από τον χρήστη να εισαγάγει την τιμή για μεταβλητά εκατοστά.
  15. Διαβάστε την τιμή που εισήγαγε ο χρήστης μέσω του πληκτρολογίου. Η πρόσβαση στα εκατοστά της συνάρτησης μέλους γίνεται εδώ χρησιμοποιώντας τη μεταβλητή δείκτη.
  16. Εμφανίστε τις τιμές που διαβάστηκαν από τον χρήστη στην κονσόλα μαζί με κάποιο άλλο κείμενο.
  17. Το πρόγραμμα πρέπει να επιστρέψει μια τιμή μετά την επιτυχή εκτέλεση.
  18. Τέλος του σώματος της συνάρτησης main().

Η δομή ως όρισμα συνάρτησης

Μπορείτε να περάσετε μια δομή σε μια συνάρτηση ως όρισμα. Αυτό γίνεται με τον ίδιο τρόπο όπως η μετάδοση ενός κανονικού ορίσματος. Οι μεταβλητές δομής μπορούν επίσης να περάσουν σε μια συνάρτηση. Ένα καλό παράδειγμα είναι όταν πρέπει να εμφανίσετε τις τιμές των μελών της δομής. Ας το αποδείξουμε αυτό:

Παράδειγμα 3:

#include<iostream>
using namespace std;

struct Person
{
	int citizenship;
	int age;
};

void func(struct Person p);

int main()
{
	struct Person p;

	p.citizenship = 1;
	p.age = 27;

	func(p);
	return 0;
}
void func(struct Person p)
{
	cout << " Person citizenship: " << p.citizenship<<endl;
	cout << " Person age: " << p.age;
}

Παραγωγή:

Η δομή ως όρισμα συνάρτησης

Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:

Η δομή ως όρισμα συνάρτησης

Επεξήγηση κώδικα:

  1. Συμπεριλάβετε το αρχείο κεφαλίδας iostream στο αρχείο μας. Στη συνέχεια θα χρησιμοποιήσουμε τις λειτουργίες του χωρίς να λάβουμε σφάλματα.
  2. Συμπεριλάβετε τον χώρο ονομάτων std στο πρόγραμμά μας για να χρησιμοποιήσετε τις κλάσεις του. Δεν θα χρειαστεί να καλέσουμε το namespace για να χρησιμοποιήσουμε τις κλάσεις του.
  3. Δημιουργήστε μια δομή με το όνομα Person.
  4. Έναρξη του σώματος του struct Person.
  5. Δημιουργήστε ένα μέλος του struct Person. Το μέλος ονομάζεται υπηκοότητα και είναι τύπου ακέραιος.
  6. Δημιουργήστε ένα μέλος του struct Person. Το μέλος ονομάζεται ηλικία και είναι τύπου ακέραιος.
  7. Τέλος του σώματος του struct Person.
  8. Δημιουργήστε μια συνάρτηση που να παίρνει ως όρισμα την παρουσία της δομής Person, p.
  9. Καλέστε την κύρια λειτουργία. Το { σηματοδοτεί την αρχή του σώματος της συνάρτησης main().
  10. Δημιουργήστε μια παρουσία του struct Person και δώστε του το όνομα p.
  11. Αποκτήστε πρόσβαση στη μεταβλητή υπηκοότητα μέλους struct χρησιμοποιώντας την παρουσία της δομής, p, και εκχωρώντας της την τιμή 1.
  12. Αποκτήστε πρόσβαση στη μεταβλητή ηλικία του μέλους struct χρησιμοποιώντας την παρουσία της δομής, p, και εκχωρώντας της την τιμή 27.
  13. Καλέστε τη συνάρτηση και μεταβιβάζοντάς της το παράδειγμα της δομής Person, p, ως όρισμα.
  14. Η συνάρτηση πρέπει να επιστρέψει μια τιμή μετά την επιτυχή εκτέλεση.
  15. Τέλος του σώματος της συνάρτησης main().
  16. Δημιουργήστε το σώμα της συνάρτησης.
  17. Η έναρξη του σώματος της συνάρτησης.
  18. Αποκτήστε πρόσβαση στην τιμή υπηκοότητας μέλους της δομής και εκτυπώστε την στην κονσόλα μαζί με άλλο κείμενο.
  19. Αποκτήστε πρόσβαση στην τιμή ηλικίας μέλους της δομής και εκτυπώστε την στην κονσόλα μαζί με άλλο κείμενο.
  20. Τέλος του σώματος λειτουργίας.

Περιορισμός του α C++ δομή

Ακολουθούν οι περιορισμοί των δομών:

  • Ο τύπος δεδομένων struct δεν μπορεί να αντιμετωπιστεί ως ενσωματωμένοι τύποι δεδομένων.
  • Operatortor όπως + - και άλλα δεν μπορούν να χρησιμοποιηθούν μεταβλητές δομής.
  • Οι δομές δεν υποστηρίζουν απόκρυψη δεδομένων. Τα μέλη μιας δομής είναι προσβάσιμα από οποιαδήποτε συνάρτηση ανεξάρτητα από το εύρος της.
  • Στατικά μέλη δεν μπορούν να δηλωθούν μέσα στο σώμα της δομής.
  • Δεν μπορούν να δημιουργηθούν κατασκευαστές μέσα σε μια δομή.

Σύνοψη

  • Μια δομή είναι μια δομή δεδομένων που αποθηκεύει στοιχεία δεδομένων που ανήκουν σε διαφορετικούς τύπους.
  • Ενώ ένας πίνακας αποθηκεύει στοιχεία δεδομένων παρόμοιου τύπου, μια δομή αποθηκεύει στοιχεία δεδομένων διαφορετικών τύπων.
  • Μια δομή θα πρέπει να χρησιμοποιείται όταν τα στοιχεία δεδομένων δεν αναμένεται να αλλάξουν τιμή.
  • Η πρόσβαση στα μέλη μιας δομής γίνεται χρησιμοποιώντας τον τελεστή τελείας (.).
  • Πρέπει να δημιουργήσουμε ένα παράδειγμα της δομής.
  • Για να δημιουργήσετε ένα C++ struct, χρησιμοποιούμε τη λέξη-κλειδί struct.
  • Οι δείκτες που δείχνουν σε μια δομή δημιουργούνται παρόμοια με τον τρόπο που δημιουργούνται οι δείκτες που δείχνουν σε κανονικούς τύπους.
  • Μια δομή μπορεί να μεταβιβαστεί ως όρισμα σε μια συνάρτηση με τον ίδιο τρόπο που μεταβιβάζονται οι συνηθισμένες συναρτήσεις.

Ημερήσιο ενημερωτικό δελτίο Guru99

Ξεκινήστε τη μέρα σας με τις πιο πρόσφατες και πιο σημαντικές ειδήσεις για την Τεχνητή Νοημοσύνη, τώρα.