Struktur data C++


Tatasusunan C/C++ membolehkan anda mentakrifkan pembolehubah yang boleh menyimpan item data jenis yang sama, tetapi struktur ialah satu lagi jenis data yang ditentukan pengguna yang tersedia dalam C++ yang membolehkan anda Menyimpan pelbagai jenis item data. Struktur

digunakan untuk mewakili rekod Katakan anda ingin menjejaki dinamik buku dalam perpustakaan Anda mungkin perlu menjejaki atribut berikut bagi setiap buku:

  • <. 🎜>Tajuk

  • Pengarang

  • Subjek

  • ID Buku

Tentukan struktur

Untuk mentakrifkan struktur, anda mesti menggunakan pernyataan struktur. Pernyataan struct mentakrifkan jenis data baharu yang mengandungi berbilang ahli Format pernyataan struct adalah seperti berikut:

struct [structure tag]
{
   member definition;
   member definition;
   ...
   member definition;
} [one or more structure variables];

tag struktur adalah pilihan, dan setiap definisi ahli ialah definisi pembolehubah standard. , seperti int i atau apungan f atau definisi pembolehubah lain yang sah. Pada penghujung definisi struktur, sebelum koma bertitik terakhir, anda boleh menentukan satu atau lebih pembolehubah struktur secara pilihan. Begini cara anda mengisytiharkan struktur Buku:

struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
}book;

Mengakses ahli struktur

Untuk mengakses ahli struktur, kami menggunakan operator akses ahli (.). Operator capaian ahli ialah tempoh antara nama pembolehubah struktur dan ahli struktur yang ingin kita akses. Anda boleh menggunakan kata kunci struct untuk mentakrifkan pembolehubah jenis struktur. Contoh berikut menunjukkan penggunaan 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;
}

Apabila kod di atas disusun dan dilaksanakan, ia menghasilkan keputusan berikut:

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 sebagai parameter fungsi

You Structures boleh digunakan sebagai parameter fungsi, dan kaedah lulus parameter adalah serupa dengan jenis pembolehubah atau penunjuk lain. Anda boleh mengakses pembolehubah struktur menggunakan kaedah yang sama seperti dalam contoh di atas:

#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;
}

Apabila kod di atas disusun dan dilaksanakan, ia menghasilkan keputusan berikut:

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

Penunjuk ke struktur

Anda boleh mentakrifkan penunjuk kepada struktur dengan cara yang sama seperti anda mentakrifkan penuding kepada jenis pembolehubah lain, seperti yang ditunjukkan di bawah:

struct Books *struct_pointer;

Kini anda boleh menyimpan alamat pembolehubah struktur dalam penuding pembolehubah yang ditakrifkan di atas. Untuk mencari alamat pembolehubah struktur, letakkan & operator di hadapan nama struktur, seperti ini:

struct_pointer = &Book1;

Untuk mengakses ahli struktur menggunakan penunjuk ke struktur, anda mesti menggunakan -> operator , seperti yang ditunjukkan di bawah:

struct_pointer->title;

Mari kita tulis semula contoh di atas menggunakan penunjuk struktur, yang akan membantu anda memahami konsep penunjuk struktur:

#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;
}

Apabila kod di atas disusun dan Apabila dilaksanakan, ia menghasilkan keputusan berikut:

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

kata kunci typedef

Berikut ialah cara yang lebih mudah untuk mentakrifkan struktur, anda boleh memberikan "alias" kepada jenis yang anda buat. Contohnya:

typedef struct
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
}Books;

Kini, anda boleh terus menggunakan Buku untuk mentakrifkan pembolehubah jenis Buku tanpa menggunakan kata kunci struct. Berikut ialah contoh:

Books Book1, Book2;

Anda boleh menggunakan kata kunci typedef untuk mentakrifkan jenis bukan struktur, seperti berikut:

typedef long int *pint32;
 
pint32 x, y, z;

x, y dan z semua menunjuk ke panjang integer Penunjuk jenis int panjang.