هياكل البيانات C ++
C / C ++ يسمح لك لتحديد المتغير مجموعة لتخزين نفس النوع من عناصر البيانات، ولكنبنية C ++، وأنواع أخرى المعرفة من قبل المستخدم البيانات المتاحة، والذي يسمح لك لتخزين أنواع مختلفة من عناصر البيانات.
بنية استخدامها لتمثيل رقما قياسيا، افترض أنك تريد أن تتبع الكتب مكتبة ديناميكية، قد تحتاج إلى تتبع كل كتاب الخصائص التالية:
- لقب
- مؤلف
- موضوع
- معرف كتاب
هيكل تعريف
من أجل تحديد هيكل، يجب عليك استخدام العبارةالبنية.يحدد بيان بنية نوع بيانات جديد يحتوي على عدد وافر من أعضاء، وبيان شكل البنية كما يلي:
struct [structure tag] { member definition; member definition; ... member definition; } [one or more structure variables];
العلامة هيكل اختيارية، كل تعريف العضو هو تعريف موحد للمتغير، مثل كثافة العمليات ط؛ أو تطفو و، أو غيرها من التعريفات المتغيرة صالحة.في نهاية بنية محددة، وآخر واحد قبل الفاصلة المنقوطة، يمكنك تحديد واحد أو أكثر من المتغيرات الهيكلية، الذي هو اختياري. هنا هو هيكل إعلان حجز حسب:
struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }book;
الوصول إلى عضو بنية
من أجل الوصول إلى أعضاء بنية، ونحن نستخدمالمشغل وصول أعضاء (.).مشغل وصول الأعضاء هو بنية فترة أسماء وهياكل أعضائنا متغير تريد الوصول بينهما. يمكنك تحديد نوع هيكل متغيرباستخدام الكلمة الأساسية لبنية.يوضح المثال التالي استخدام هيكل:
#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; }
عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:
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
هيكل كمعلمة وظيفة
يمكنك وضع هيكل كمعلمة وظيفة، وبطريقة مماثلة في مجلس الشيوخ إلى أنواع أخرى من المتغيرات أو المؤشرات. يمكنك استخدام المثال أعلاه الطريق للوصول إلى المتغيرات هيكل:
#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; }
عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:
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
مؤشر إلى بنية
يمكنك تحديد مؤشر بنية وطريقة تعريف روابط لأنواع أخرى مماثلة من متغير مؤشر، على النحو التالي:
struct Books *struct_pointer;
الآن يمكنك معالجة المتغيرات بنية تخزين في التعريف المذكور أعلاه لمتغير المؤشر. للعثور على عنوان المتغير الهيكل، وومشغل أمام اسم هيكل، على النحو التالي:
struct_pointer = &Book1;
استخدام مؤشر للوصول إلى نقطة هيكل عضو في الهيكل، يجب عليك استخدام -> المشغل، على النحو التالي:
struct_pointer->title;
دعونا نستخدم مؤشر هيكل لإعادة كتابة المثال أعلاه، وسوف تساعدك على فهم مفهوم مؤشرات هيكل:
#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; }
عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:
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
الكلمة typedef و
هنا هو أبسط طريقة لتحديد هيكل، يمكنك إنشاء نوع إلى اتخاذ "الاسم المستعار". على سبيل المثال:
typedef struct { char title[50]; char author[50]; char subject[100]; int book_id; }Books;
الآن يمكنك استخدامها لتحديد المتغيراتكتبكتب أنواع، من دون الحاجة إلى استخدام الكلمة البنية. وفيما يلي أمثلة على ذلك:
Books Book1, Book2;
يمكنك استخدام الكلمةtypedef ولتحديد نوع غير الهيكلية، على النحو التالي:
typedef long int *pint32; pint32 x, y, z;
س، ص وض تشير إلى عدد صحيح طويل مؤشر كثافة العمليات طويلة.