Latest web development tutorials

هياكل البيانات 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;

س، ص وض تشير إلى عدد صحيح طويل مؤشر كثافة العمليات طويلة.