Latest web development tutorials

C ++ 데이터 구조

C / C ++는 데이터 아이템들의 동일한 유형을 저장하도록 배열 변수를 정의 할 수 있지만,구조가 데이터 아이템의 종류를 저장할 수있는 C ++ 가능한 다른 사용자 정의 데이터 형식이다.

구조, 레코드를 나타내는 데 사용되는 동적 라이브러리 책을 추적 할 가정, 각 책에는 다음과 같은 속성을 추적해야 할 수 있습니다 :

  • 표제
  • 저자
  • 제목
  • 책 ID

정의 구조

구조를 정의하기 위해, 당신은구조체 문을 사용해야합니다.구조체 문장은 다음과 같이 복수의 부재를 포함하는 새로운 데이터 유형, 포맷 구조체 문이 정의

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

구조 태그는 선택 사항이며,모든 구성원의 정의는 내가 int로서 변수의 표준 정의입니다 또는 F를 떠 또는 다른 유효한 변수 정의. 정의 구조의 끝에서, 세미콜론 전에 마지막 하나는 선택적이며 하나 또는 그 이상의 구조적 변수들을 지정할 수있다. 여기에 구조 선언 책으로는 다음과 같습니다

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 struct
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
}Books;

이제 구조체 키워드를 사용하지 않고도 변수도서도서 유형을 정의하는 데 사용할 수있다. 예를 들면 다음과 같습니다 :

Books Book1, Book2;

다음과 같이, 비 구조 유형을 정의하는형식 정의 키워드를 사용할 수 있습니다 :

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

X, Y 및 Z는 긴 정수 long int와 포인터를 가리키는.