Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C++ Datastructuren: Efficiënte Programma's Bouwen met Arrays, Structs en Meer

C/C++ arrays staan u toe variabelen te definiëren die verschillende data-items van hetzelfde type combineren, maar structure (struct) is een ander door de gebruiker gedefinieerd datatype dat u in staat stelt data-items van verschillende typen te combineren.

Structuren worden gebruikt om een record weer te geven. Stel u wilt uw boeken in een bibliotheek bijhouden. U wilt misschien de volgende attributen over elk boek bijhouden:

  • Titel
  • Auteur
  • Onderwerp
  • Boek ID

Een Structuur Definiëren

Om een structuur te definiëren, moet u de struct statement gebruiken. De struct statement definieert een nieuw datatype, met meer dan één member, voor uw programma. Het formaat van de struct statement is als volgt:

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

De structure tag is optioneel en elke member definitie is een normale variabele definitie, zoals int i; of float f; of enige andere geldige variabele definitie. Aan het einde van de structuurdefinitie, voor de laatste puntkomma, kunt u één of meer structuurvariabelen specificeren, maar dat is optioneel. Hier is de manier waarop u de Book structuur zou declareren:

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

Structuurlidmaatschappen Benaderen (Accessing Structure Members)

Om elk lid van een structuur te benaderen, gebruiken we de member access operator (.). De member access operator wordt gecodeerd als een punt tussen de structuurvariabele naam en het structuurlid dat we willen benaderen. U zou struct trefwoord gebruiken om variabelen van structuurtype te definiëren. Hier volgt het voorbeeld om het gebruik van structuur te verduidelijken:

Live Demo
 #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; // Declareer Book1 van type Book
  struct Books Book2; // Declareer Book2 van type Book
  // boek 1 specificatie
  strcpy( Book1.title, "Learn C++ Programming");
  strcpy( Book1.author, "Chand Miyan");
  strcpy( Book1.subject, "C++ Programming");
  Book1.book_id = 6495407;
  // boek 2 specificatie
  strcpy( Book2.title, "Telecom Billing");
  strcpy( Book2.author, "Yakit Singha");
  strcpy( Book2.subject, "Telecom");
  Book2.book_id = 6495700;
  // Print Book1 info
  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;
  // Print Book2 info
  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;
} 

Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het het volgende resultaat:

 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 

Structuren als Functieargumenten

U kunt een structuur als functieargument doorgeven op een heel vergelijkbare manier als u elke andere variabele of pointer doorgeeft. U zou structuurvariabelen benaderen op een vergelijkbare manier als u in het bovenstaande voorbeeld heeft gedaan:

Live Demo
 #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; // Declareer Book1 van type Book
  struct Books Book2; // Declareer Book2 van type Book
  // boek 1 specificatie
  strcpy( Book1.title, "Learn C++ Programming");
  strcpy( Book1.author, "Chand Miyan");
  strcpy( Book1.subject, "C++ Programming");
  Book1.book_id = 6495407;
  // boek 2 specificatie
  strcpy( Book2.title, "Telecom Billing");
  strcpy( Book2.author, "Yakit Singha");
  strcpy( Book2.subject, "Telecom");
  Book2.book_id = 6495700;
  // Print Book1 info
  printBook( Book1 );
  // Print Book2 info
  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;
} 

Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het het volgende resultaat:

 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 

Pointers naar Structuren

U kunt pointers naar structuren definiëren op een heel vergelijkbare manier als u pointer naar elke andere variabele definieert als volgt:

 struct Books *struct_pointer; 

Nu kunt u het adres van een structuurvariabele opslaan in de bovenstaande gedefinieerde pointer variabele. Om het adres van een structuurvariabele te vinden, plaats u de & operator voor de structuurnaam als volgt:

 struct_pointer = &Book1; 

Om de leden van een structuur te benaderen met een pointer naar die structuur, moet u de -> operator gebruiken als volgt:

 struct_pointer->title; 

Laten we het bovenstaande voorbeeld herschrijven met structuurpointer, hoop dat dit het concept makkelijker maakt te begrijpen:

Live Demo
 #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; // Declareer Book1 van type Book
  struct Books Book2; // Declareer Book2 van type Book
  // Boek 1 specificatie
  strcpy( Book1.title, "Learn C++ Programming");
  strcpy( Book1.author, "Chand Miyan");
  strcpy( Book1.subject, "C++ Programming");
  Book1.book_id = 6495407;
  // Boek 2 specificatie
  strcpy( Book2.title, "Telecom Billing");
  strcpy( Book2.author, "Yakit Singha");
  strcpy( Book2.subject, "Telecom");
  Book2.book_id = 6495700;
  // Print Book1 info, doorgegeven adres van structuur
  printBook( &Book1 );
  // Print Book2 info, doorgegeven adres van structuur
  printBook( &Book2 );
  return 0;
}
// Deze functie accepteert pointer naar structuur als parameter.
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;
} 

Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het het volgende resultaat:

 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 

Het typedef Trefwoord

Er is een makkelijkere manier om structs te definiëren of u kunt typen die u creëert "aliassen". Bijvoorbeeld:

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

Nu kunt u Books direct gebruiken om variabelen van Books type te definiëren zonder struct trefwoord te gebruiken. Hier volgt het voorbeeld:

 Books Book1, Book2; 

U kunt typedef trefwoord ook voor non-structs gebruiken als volgt:

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

x, y en z zijn allemaal pointers naar long ints.

C Taal

  1. Data-opslag Gerevolutioneerd: Next-Generation Magnetische Nanostructuren Met Onzichtbaarheidsmantels
  2. C++ datatypes begrijpen: fundamentals, modifiers en best practices
  3. C++ operators: complete gids met praktische voorbeelden
  4. C++ comments: best practices voor leesbare, onderhoudbare code
  5. C++ Char Datatype: Declaratie, ASCII en Conversie‑Technieken
  6. C-structuren: Complexe data efficiënt organiseren
  7. C typedef: Code vereenvoudigen met eigen typenamen
  8. C++ Datastructuren: Efficiënte Programma's Bouwen met Arrays, Structs en Meer
  9. Data Abstractie in C++ Beheersen: Ontwerp Vereenvoudigen met Interface-Implementatie Scheiding
  10. Data Encapsulatie in C++: Uw Code Beschermen
  11. Java Data Structures: Kernklassen & Collections Framework Verkend