C ++ Datenstrukturen
C / C ++ können Sie die Array - Variable zu definieren , die gleiche Art von Datenelementen zu speichern, aber dieStruktur ist C ++, eine andere benutzerdefinierte Datentypen zur Verfügung, die man verschiedene Typen von Datenelementen zu speichern.
Struktur verwendet, um einen Datensatz darstellen: Angenommen, Sie dynamische Bibliothek Bücher verfolgen möchten, können Sie den Überblick über jedes Buch die folgenden Eigenschaften behalten müssen:
- Titel
- Autor
- Thema
- Buch-ID
Definition Struktur
Um die Struktur zu definieren, müssen Sie dieStruktur - Anweisung verwenden.struct Anweisung definiert eine neue Datentyp, der eine Vielzahl von Elementen enthält, ist das Format struct-Anweisung ist wie folgt:
struct [structure tag] { member definition; member definition; ... member definition; } [one or more structure variables];
Struktur - Tagoptional ist, ist jedes Mitglied Definition der Standard - Definition einer Variablen, wie int i; oder f schwimmen oder andere gültige Variablendefinitionen. Am Ende der Struktur definiert, die letzte vor dem Semikolon, können Sie eine oder mehrere Strukturvariablen angeben, die optional ist. Hier ist die Strukturdeklaration Buchen bis zum:
struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }book;
Der Zugang zu Strukturelement
Um Mitglieder der Struktur zugreifen zu können , verwenden wirden Member - Access-Operator (.).Mitglied Zugang Betreiber ist eine Periode Struktur Variablennamen und Strukturen unserer Mitglieder zwischen zugreifen möchten. Sie können den Typ einer Variablen Struktur mitdem Schlüsselwort structdefinieren. Das folgende Beispiel demonstriert die Verwendung der Struktur:
#include <iostream> #include <cstring> using namespace std; struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }; int main( ) { struct Books Book1; // 声明 Book1,类型为 Book struct Books Book2; // 声明 Book2,类型为 Book // Book1 详述 strcpy( Book1.title, "Learn C++ Programming"); strcpy( Book1.author, "Chand Miyan"); strcpy( Book1.subject, "C++ Programming"); Book1.book_id = 6495407; // Book2 详述 strcpy( Book2.title, "Telecom Billing"); strcpy( Book2.author, "Yakit Singha"); strcpy( Book2.subject, "Telecom"); Book2.book_id = 6495700; // 输出 Book1 信息 cout << "Book 1 title : " << Book1.title <<endl; cout << "Book 1 author : " << Book1.author <<endl; cout << "Book 1 subject : " << Book1.subject <<endl; cout << "Book 1 id : " << Book1.book_id <<endl; // 输出 Book2 信息 cout << "Book 2 title : " << Book2.title <<endl; cout << "Book 2 author : " << Book2.author <<endl; cout << "Book 2 subject : " << Book2.subject <<endl; cout << "Book 2 id : " << Book2.book_id <<endl; return 0; }
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:
Book 1 title : Learn C++ Programming Book 1 author : Chand Miyan Book 1 subject : C++ Programming Book 1 id : 6495407 Book 2 title : Telecom Billing Book 2 author : Yakit Singha Book 2 subject : Telecom Book 2 id : 6495700
Struktur als Funktionsparameter
Sie können die Struktur als Funktionsparameter setzen, den Senat auf ähnliche Weise wie andere Arten von Variablen oder Zeiger. Sie können das obige Beispiel die Art und Weise verwenden, um Strukturvariablen zugreifen:
#include <iostream> #include <cstring> using namespace std; void printBook( struct Books book ); struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }; int main( ) { struct Books Book1; // 声明 Book1,类型为 Book struct Books Book2; // 声明 Book2,类型为 Book // Book1 详述 strcpy( Book1.title, "Learn C++ Programming"); strcpy( Book1.author, "Chand Miyan"); strcpy( Book1.subject, "C++ Programming"); Book1.book_id = 6495407; // Book2 详述 strcpy( Book2.title, "Telecom Billing"); strcpy( Book2.author, "Yakit Singha"); strcpy( Book2.subject, "Telecom"); Book2.book_id = 6495700; // 输出 Book1 信息 printBook( Book1 ); // 输出 Book2 信息 printBook( Book2 ); return 0; } void printBook( struct Books book ) { cout << "Book title : " << book.title <<endl; cout << "Book author : " << book.author <<endl; cout << "Book subject : " << book.subject <<endl; cout << "Book id : " << book.book_id <<endl; }
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:
Book title : Learn C++ Programming Book author : Chand Miyan Book subject : C++ Programming Book id : 6495407 Book title : Telecom Billing Book author : Yakit Singha Book subject : Telecom Book id : 6495700
Zeiger auf eine Struktur
Sie können einen Zeiger auf die Struktur, die Art und Weise, die Definition von Links zu anderen ähnlichen Arten von Zeigervariablen definieren, wie folgt:
struct Books *struct_pointer;
Jetzt können Sie Speicherstruktur Variablen in der obigen Definition eines Zeigervariable adressieren. Um die Adresse der Strukturvariable zu finden, den Operator & vor dem Namen der Struktur, wie folgt:
struct_pointer = &Book1;
Um den Zeiger verwenden, um die Mitgliederstruktur verweist auf die Struktur zugreifen zu können, müssen Sie verwenden, um die Operator -> wie folgt:
struct_pointer->title;
Lassen Sie uns die Struktur Zeiger verwenden das obige Beispiel neu zu schreiben, es wird Ihnen das Konzept der Struktur Zeiger helfen zu verstehen:
#include <iostream> #include <cstring> using namespace std; void printBook( struct Books *book ); struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }; int main( ) { struct Books Book1; // 声明 Book1,类型为 Book struct Books Book2; // 声明 Book2,类型为 Book */ // Book1 详述 strcpy( Book1.title, "Learn C++ Programming"); strcpy( Book1.author, "Chand Miyan"); strcpy( Book1.subject, "C++ Programming"); Book1.book_id = 6495407; // Book2 详述 strcpy( Book2.title, "Telecom Billing"); strcpy( Book2.author, "Yakit Singha"); strcpy( Book2.subject, "Telecom"); Book2.book_id = 6495700; // 通过传 Book1 的地址来输出 Book1 信息 printBook( &Book1 ); // 通过传 Book2 的地址来输出 Book2 信息 printBook( &Book2 ); return 0; } // 该函数以结构指针作为参数 void printBook( struct Books *book ) { cout << "Book title : " << book->title <<endl; cout << "Book author : " << book->author <<endl; cout << "Book subject : " << book->subject <<endl; cout << "Book id : " << book->book_id <<endl; }
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:
Book title : Learn C++ Programming Book author : Chand Miyan Book subject : C++ Programming Book id : 6495407 Book title : Telecom Billing Book author : Yakit Singha Book subject : Telecom Book id : 6495700
Schlüsselwort typedef
Hier ist ein einfacher Weg, um die Struktur zu definieren, können Sie die Art erstellen zu nehmen "Alias". Zum Beispiel:
typedef struct { char title[50]; char author[50]; char subject[100]; int book_id; }Books;
Jetzt können Sie verwenden , um VariablenBücherTypen definieren, ohne die Notwendigkeit , die Struktur Schlüsselwort verwenden. Die folgenden Beispiele zeigen:
Books Book1, Book2;
Sie können das Schlüsselworttypedef verwenden Nicht-Strukturtyp zu definieren, wie folgt:
typedef long int *pint32; pint32 x, y, z;
x, y und z weisen auf eine lange ganze Zahl long int-Zeiger.