estruturas de dados C ++
C / C ++ permite que você defina a variável de matriz para armazenar o mesmo tipo de itens de dados, mas aestrutura é C ++, outros tipos de dados definidos pelo usuário disponíveis, o que permite armazenar diferentes tipos de itens de dados.
Estrutura utilizada para representar um recorde, suponha que você deseja acompanhar livros da biblioteca dinâmica, pode ser necessário para manter o controle de cada livro as seguintes propriedades:
- título
- autor
- assunto
- book ID
estrutura de definição
A fim de definir a estrutura, você deve usar a declaraçãostruct.declaração estrutura define um novo tipo de dados que contém uma pluralidade de membros, a instrução formato de estrutura é a seguinte:
struct [structure tag] { member definition; member definition; pt. member definition; } [one or more structure variables];
estrutura de tag é opcional, cada definição de membro é a definição padrão de uma variável, como int i; ou float f, ou outras definições de variáveis válidos.No final da estrutura definida, a última antes do ponto e vírgula, você pode especificar uma ou mais variáveis estruturais, o que é opcional. Aqui é a estrutura declaração Livro por:
struct Books { char title[50]; char author[50]; char subject[100]; int book_id; }book;
O acesso ao membro de estrutura
Para acessar os membros da estrutura, usamoso operador de acesso de membro (.).operador de acesso de membro é uma estrutura período nomes e estruturas de nossos membros variáveis deseja acessar entre eles. Você pode definir o tipo de uma estrutura variável utilizandoa palavra-chave struct.O exemplo seguinte demonstra o uso da estrutura:
#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; }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
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
Estrutura como um parâmetro da função
Pode colocar a estrutura como um parâmetro da função, o senado modo semelhante a outros tipos de variáveis ou ponteiros. Você pode usar o exemplo acima, a maneira de acessar variáveis de estrutura:
#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; }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
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
Ponteiro para um estrutura
Você pode definir um ponteiro para a estrutura, a forma como a definição de links para outros tipos similares de variável ponteiro, como segue:
struct Books *struct_pointer;
Agora você pode resolver variáveis de estrutura de armazenamento na definição acima de uma variável ponteiro. Para encontrar o endereço da variável estrutura, o operador & em frente ao nome da estrutura, como se segue:
struct_pointer = &Book1;
Para usar o ponteiro para acessar os pontos de estrutura membro da estrutura, você deve usar o operador ->, como segue:
struct_pointer->title;
Vamos usar o ponteiro estrutura para reescrever o exemplo acima, ele vai ajudar você a entender o conceito de ponteiros estrutura:
#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; }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
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
palavra-chave typedef
Aqui está uma maneira mais simples para definir a estrutura, você pode criar o tipo de tomar um "Alias". Por exemplo:
typedef struct { char title[50]; char author[50]; char subject[100]; int book_id; }Books;
Agora você pode usar para definir variáveis tiposLivrosLivros, sem a necessidade de utilizar a palavra-chave struct. Os seguintes são exemplos:
Books Book1, Book2;
Você pode usar a palavra-chavetypedef para definir o tipo não-estruturais, como segue:
typedef long int *pint32; pint32 x, y, z;
x, y e z estão apontando para um ponteiro long int inteiro longo.