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.