Latest web development tutorials

C ++ структуры данных

C / C ++ позволяет определить переменную массива для хранения и тот же тип элементов данных, ноструктура C ++, еще определяемые пользователем типы данных , доступных, который позволяет хранить различные типы элементов данных.

Структура используется для представления записи, предположим, что вы хотите отслеживать динамическую библиотеку книг, вам, возможно, придется следить за каждой книги следующие свойства:

  • название
  • автор
  • субъект
  • Книга ID

Определение структуры

Для того , чтобы определить структуру, вы должны использовать операторSTRUCT.структура оператор определяет новый тип данных, который содержит множество элементов, оператор формата структура выглядит следующим образом:

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

тег структуры не является обязательным, каждое определение является членом стандартное определение переменной, такой как INT I, или поплавок п, или другие действительные определения переменных.В конце структуры, определенной, последним перед точкой с запятой, вы можете указать один или несколько структурных переменных, которые не является обязательным. Вот структура декларации Бронировать по:

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

Доступ к члену структуры

Для того , чтобы получить доступ к членам структуры, мы используемоператор доступа к члену (.).Оператор доступа член представляет собой период структура имен переменных и структуры наших членов хотят получить доступ между ними. Вы можете определить тип переменной структуры , используя ключевое словоSTRUCT.Следующий пример демонстрирует использование структуры:

#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

ЬурейеЕ ключевое слово

Вот более простой способ, чтобы определить структуру, вы можете создать тип, чтобы принять "Alias". Например:

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

Теперь вы можете использовать для определения переменных типакнигиКниги, без необходимости использовать STRUCT ключевое слово. Ниже приведены примеры:

Books Book1, Book2;

Вы можете использовать ключевое словоTYPEDEF , чтобы определить , не структурный тип, следующим образом :

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

х, у и г указывают на длинный Int указатель длинное целое.