Latest web development tutorials

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.