C++ Struktura Z Przykładem

⚡ Inteligentne podsumowanie

Struktura w C++ jest zdefiniowanym przez użytkownika typem danych grupującym elementy różnych typów danych pod jedną nazwą, umożliwiając jednej zmiennej przechowywanie powiązanych wartości, takich jak imię i nazwisko osoby, obywatelstwo i wiek.

  • 📦 Różne typy danych: Struktura grupuje zmienne różnych typów pod jedną, zdefiniowaną przez użytkownika nazwą.
  • 🔑 słowo kluczowe struktury: Zdefiniuj strukturę za pomocą słowa kluczowego struct, a następnie wypisz jej elementy w nawiasach klamrowych.
  • 🧱 Tworzenie instancji: Osoba p tworzy zmienną strukturalną i przydziela jej pamięć.
  • 🎯 Operator kropki: Odczytaj lub ustaw dowolnego członka za pomocą instancji, jak w p.age = 27.
  • ➡️ Wskaźniki i funkcje: Struktura działa przy użyciu wskaźników i przekazuje je do funkcji jak zwykły argument.
  • 🤖 Pomoc AI: GitHub Copilot i inne narzędzia wspomagające sztuczną inteligencję obsługują definicje struktur i dostęp do członków z poziomu komentarza.

C++ Struktura

Czym jest struktura C++?

STRUKTURA to C++ struktura danych, która może być używana do przechowywania elementów różnych typów danych. W C++, struktura to zdefiniowany przez użytkownika typ danych. Struktura tworzy typ danych dla grupyping elementy różnych typów danych w ramach jednego typu danych.

Na przykład:

Załóżmy, że chcesz przechowywać informacje o jakiejś osobie, jej imieniu, obywatelstwie i wieku. Możesz tworzyć zmienne, takie jak imię i nazwisko, obywatelstwo i wiek, aby przechowywać dane oddzielnie.

Jednak w przyszłości może zaistnieć potrzeba przechowywania informacji o wielu osobach. Oznacza to, że zostaną utworzone zmienne dla różnych osób. Na przykład: imię1, obywatelstwo1, wiek1 itd. Aby tego uniknąć, lepiej utworzyć strukturę.

Kiedy używać struktury?

Oto kilka powodów używania struktury w C++.

  • Użyj struktury, jeśli chcesz przechowywać elementy różnych typów danych w jednym typie danych.
  • C++ Struktury są typem wartościowym, a nie typem referencyjnym. Użyj struktury, jeśli nie zamierzasz modyfikować danych po utworzeniu.

C++ Inicjalizacja struktury

Aby utworzyć C++ struktury, używamy słowa kluczowego struct, po którym następuje identyfikator. Identyfikator staje się nazwą struktury. Oto składnia tworzenia pliku a C++ struktura:

Składnia:

struct struct_name  
{  
     // struct members
}   

W powyższej składni użyliśmy słowa kluczowego struct. Nazwa_struktury to nazwa struktury.

Elementy struktury są dodawane w nawiasach klamrowych. Członkowie ci prawdopodobnie należą do różnych typów danych.

Na przykład:

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

W powyższym przykładzie Osoba jest strukturą składającą się z trzech elementów. Członkowie obejmują imię i nazwisko, obywatelstwo i wiek. Jeden element ma typ danych char, a pozostałe 2 są liczbami całkowitymi. Kiedy tworzona jest struktura, pamięć nie jest przydzielana. Pamięć jest przydzielana dopiero po dodaniu zmiennej do struktury.

Tworzenie wystąpień konstrukcji

W powyższym przykładzie utworzyliśmy strukturę o nazwie Osoba. Możemy utworzyć zmienną strukturalną w następujący sposób:

Person p;

p jest zmienną strukturalną typu Osoba. Możemy użyć tej zmiennej, aby uzyskać dostęp do elementów struktury.

Dostęp do elementów struktury

Aby uzyskać dostęp do członków struktury, używamy instancji struktury i operatora kropki (.). Na przykład, aby uzyskać dostęp do wieku członka struktury Person:

p.age = 27;

Uzyskaliśmy dostęp do wieku członkowskiego struktury Person przy użyciu instancji struktury, str. Następnie ustawiliśmy wartość wieku członka na 27 lat.

1 przykład:

#include <iostream>    
using namespace std;
struct Person
{
	int citizenship;
	int age;
};
int main(void) {
	struct Person p;
	p.citizenship = 1;
	p.age = 27;
	cout << "Person citizenship: " << p.citizenship << endl;
	cout << "Person age: " << p.age << endl;

	return 0;
}

Wyjście:

Dostęp do elementów struktury

Oto zrzut ekranu kodu:

Dostęp do elementów struktury

Code Wyjaśnienie:

  1. Dołącz plik nagłówkowy iostream do naszego programu, aby móc korzystać ze zdefiniowanych w nim funkcji.
  2. Dołącz przestrzeń nazw std, aby używać jej klas bez wywoływania jej.
  3. Utwórz strukturę o nazwie Person.
  4. Początek treści struktury.
  5. Utwórz element członkowski struktury o nazwie Citizenship typu integer.
  6. Utwórz element członkowski struktury o nazwie age typu integer.
  7. Koniec treści struktury.
  8. Wywołaj funkcję main(). Logikę programu należy dodać w treści tej funkcji.
  9. Utwórz instancję struktury Person i nadaj jej nazwę p.
  10. Ustaw wartość obywatelstwa członkowskiego struktury na 1.
  11. Ustaw wartość wieku elementu członkowskiego struktury na 27.
  12. Wydrukuj wartość obywatelstwa członkowskiego struktury na konsoli wraz z innym tekstem.
  13. Wydrukuj wartość wieku członka struktury na konsoli wraz z innym tekstem.
  14. Program powinien zwrócić wartość, jeśli działa pomyślnie.
  15. Koniec funkcji main().

Wskaźniki do struktury

Można utworzyć wskaźnik wskazujący na strukturę. Jest to podobne do sposobu tworzenia wskaźników wskazujących na natywne typy danych, takie jak int, float, double itp. Należy zauważyć, że wskaźnik w C++ zapisze lokalizację w pamięci.

2 przykład:

#include <iostream>
using namespace std;

struct Length
{
	int meters;
	float centimeters;
};

int main()
{
	Length *ptr, l;

	ptr = &l;

	cout << "Enter meters: ";
	cin >> (*ptr).meters;
	cout << "Enter centimeters: ";
	cin >> (*ptr).centimeters;
	cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";

	return 0;
}

Wyjście:

Wskaźniki do struktury

Oto zrzut ekranu kodu:

Wskaźniki do struktury

Code Wyjaśnienie:

  1. Dołącz plik nagłówkowy iostream do naszego programu, aby móc korzystać z jego funkcji.
  2. Dołącz przestrzeń nazw std do naszego programu, aby móc korzystać z jej klas bez wywoływania jej.
  3. Utwórz strukturę o nazwie Długość.
  4. Początek treści konstrukcji. Długość.
  5. Utwórz element członkowski struktury o nazwie „metry” o typie danych całkowitych.
  6. Utwórz element struktury o nazwie centymetry typu integer.
  7. Koniec korpusu konstrukcji Długość.
  8. Wywołaj funkcję main().
  9. Początek treści funkcji main().
  10. Utwórz zmienną wskaźnikową *ptr i normalną zmienną l typu Długość.
  11. Zapisz adres zmiennej l w naszym zmienna wskaźnikowa.
  12. Wyświetl na konsoli komunikat z prośbą o wprowadzenie wartości dla liczników zmiennych.
  13. Odczytaj wartość wprowadzoną przez użytkownika za pomocą klawiatury. Dostęp do liczników funkcji składowych można uzyskać za pomocą zmiennej wskaźnikowej.
  14. Wyświetl komunikat na konsoli z prośbą o wprowadzenie wartości dla zmiennych centymetrów.
  15. Odczytaj wartość wprowadzoną przez użytkownika za pomocą klawiatury. Dostęp do funkcji członkowskiej centymetry można uzyskać za pomocą zmiennej wskaźnikowej.
  16. Wyświetl wartości odczytane od użytkownika na konsoli wraz z innym tekstem.
  17. Program musi zwrócić wartość po pomyślnym wykonaniu.
  18. Koniec treści funkcji main().

Struktura jako argument funkcji

Możesz przekazać strukturę do funkcji jako argument. Odbywa się to w taki sam sposób, jak przekazywanie normalnego argumentu. Zmienne strukturalne można również przekazać do funkcji. Dobrym przykładem jest sytuacja, w której trzeba wyświetlić wartości elementów członkowskich struktury. Zademonstrujmy to:

3 przykład:

#include<iostream>
using namespace std;

struct Person
{
	int citizenship;
	int age;
};

void func(struct Person p);

int main()
{
	struct Person p;

	p.citizenship = 1;
	p.age = 27;

	func(p);
	return 0;
}
void func(struct Person p)
{
	cout << " Person citizenship: " << p.citizenship<<endl;
	cout << " Person age: " << p.age;
}

Wyjście:

Struktura jako argument funkcji

Oto zrzut ekranu kodu:

Struktura jako argument funkcji

Code Wyjaśnienie:

  1. Dołącz plik nagłówkowy iostream do naszego pliku. Będziemy wtedy korzystać z jego funkcji bez popełniania błędów.
  2. Dołącz przestrzeń nazw std do naszego programu, aby móc korzystać z jej klas. Nie będziemy musieli wywoływać przestrzeni nazw, aby korzystać z jej klas.
  3. Utwórz strukturę o nazwie Person.
  4. Początek treści struktury Osoba.
  5. Utwórz członka struktury Person. Element ma nazwę obywatelstwo i jest typu całkowitego.
  6. Utwórz członka struktury Person. Element ma nazwę age i jest typu całkowitego.
  7. Koniec treści struktury Osoba.
  8. Utwórz funkcję, która jako argument przyjmie instancję struktury Person, p.
  9. Wywołaj funkcję główną. { oznacza początek treści funkcji main().
  10. Utwórz instancję struktury Person i nadaj jej nazwę p.
  11. Uzyskaj dostęp do zmiennej członkowskiej struktury, korzystając z instancji struktury p i przypisując jej wartość 1.
  12. Uzyskaj dostęp do zmiennej członkowskiej struktury age, korzystając z instancji struktury p i przypisując jej wartość 27.
  13. Wywołaj funkcję i przekaż jej jako argument instancję struktury Person, p.
  14. Funkcja musi zwrócić wartość po pomyślnym wykonaniu.
  15. Koniec treści funkcji main().
  16. Utwórz treść funkcji.
  17. Początek treści funkcji.
  18. Uzyskaj dostęp do wartości obywatelstwa członka struktury i wydrukuj ją na konsoli wraz z innym tekstem.
  19. Uzyskaj dostęp do wartości wieku członka struktury i wydrukuj ją na konsoli wraz z innym tekstem.
  20. Koniec ciała funkcji.

Ograniczenie A C++

Oto ograniczenia struktur:

  • Typu danych struct nie można traktować jak wbudowanych typów danych.
  • Operatory takie jak + - i inne nie mogą być używane zmienne struktury.
  • Struktury nie obsługują ukrywania danych. Dostęp do elementów struktury można uzyskać za pomocą dowolnej funkcji, niezależnie od jej zakresu.
  • Elementy statyczne nie mogą być deklarowane w treści struktury.
  • Konstruktorów nie można tworzyć wewnątrz struktury.

FAQ

In C++ Struktura i klasa są niemal identyczne. Jedyną różnicą jest domyślny dostęp: elementy struktury są domyślnie publiczne, a elementy klasy – prywatne. Obie obsługują funkcje składowe, konstruktory i dziedziczenie.

Struktura AC przechowuje wyłącznie dane i należy ją wpisać przed każdą deklaracją zmiennej. C++ Struktura może również zawierać funkcje członkowskie, konstruktory i specyfikatory dostępu, a słowo kluczowe struct jest opcjonalne podczas deklarowania zmiennych.

Zadeklaruj strukturę, a następnie zdefiniuj jej tablicę, na przykład „Person people[3”. Każdy element jest pełną strukturą, a dostęp do jej elementów uzyskuje się za pomocą „people[0].age”. Tablice struktur przechowują razem wiele rekordów tego samego typu.

Struktura zagnieżdżona to struktura zadeklarowana jako element wewnątrz innej struktury. Grupuje ona powiązane poddane, takie jak struktura „Data” umieszczona wewnątrz struktury „Pracownik”. Do elementów wewnętrznych można dotrzeć, łącząc je za pomocą operatora kropki.

Rozmiar jest mniej więcej sumą jego elementów, powiększoną o wypełnienie dodane przez kompilator w celu wyrównania, więc sizeof może przekroczyć całkowitą wartość. Funkcje członkowskie nic nie dodają. Porządkowanie elementów według rozmiaru zmniejsza marnowanie wypełnienia.

Użyj operatora strzałki, gdy trzymasz wskaźnik do struktury. Zamiast (*ptr).age, skrót ptr->age odczytuje ten sam element. Operator kropki działa na instancji bezpośredniej, a nie na wskaźniku.

Tak. Asystenci kodowania AI zamieniają krótki monit lub komentarz w kompletny C++ Struktura, w tym elementy, konstruktory i dostęp do pól. Zawsze sprawdzaj wygenerowane typy danych i ich dopasowanie, ponieważ AI może nie uwzględnić wymagań specyficznych dla projektu.

Tak. Drugi pilot GitHub Sugeruje definicje struktur, zmienne członkowskie oraz dostęp za pomocą kropki lub strzałki podczas pisania w edytorze. Dobrze radzi sobie z powtarzającymi się szablonami, choć nadal należy zweryfikować typy, wypełnienie i logikę przed kompilacją.

Podsumuj ten post następująco: