Co to jest struktura w C ++?
STRUCT oznacza C ++ struktury danych, które mogą być używane do przechowywania w sobie elementy różnych typów danych. W C ++ struktura jest typem danych zdefiniowanym przez użytkownika. Struktura tworzy typ danych do grupowania elementów różnych typów danych w ramach jednego typu danych.
Na przykład:
Załóżmy, że musisz przechowywać informacje o kimś, jego imię i nazwisko, obywatelstwo i wiek. 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 jest utworzyć strukturę.
W tym samouczku C ++ nauczysz się:
- Co to jest struktura w C ++?
- Kiedy używać struktury?
- Inicjalizacja struktury C ++
- Tworzenie wystąpień struktury
- Dostęp do członków struktury
- Wskaźniki do struktury
- Struktura jako argument funkcji
- Ograniczenie struktury C ++
Kiedy używać struktury?
Oto kilka powodów używania struktury w C ++.
- Użyj struktury, gdy chcesz przechowywać elementy różnych typów danych w jednym typie danych.
- Struktury C ++ są typem wartości, a nie typem referencyjnym. Użyj struktury, jeśli nie zamierzasz modyfikować swoich danych po utworzeniu.
Inicjalizacja struktury C ++
Aby stworzyć strukturę C ++, używamy słowa kluczowego struct, po którym następuje identyfikator. Identyfikator staje się nazwą struktury. Oto składnia tworzenia struktury w C ++:
Składnia:
struct struct_name{// struct members}
W powyższej składni użyliśmy słowa kluczowego struct. Nazwa_struktury to nazwa struktury.
Składowe struktury są dodawane w nawiasach klamrowych. Te elementy członkowskie 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ą z trzema członami. Członkowie zawierają imię i nazwisko, obywatelstwo i wiek. Jeden element członkowski ma typ danych char, podczas gdy pozostałe 2 są liczbami całkowitymi, gdy tworzona jest struktura, pamięć nie jest przydzielana. Pamięć jest przydzielana tylko po dodaniu zmiennej do struktury.
Tworzenie wystąpień struktury
W powyższym przykładzie utworzyliśmy strukturę o nazwie Person. Możemy utworzyć zmienną strukturalną w następujący sposób:
Person p;
P jest zmienną strukturalną typu Person. Możemy użyć tej zmiennej, aby uzyskać dostęp do członków struktury.
Dostęp do członków struktury
Aby uzyskać dostęp do elementów członkowskich struktury, używamy wystąpienia 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łonka struktury Person przy użyciu instancji struktury, p. Następnie ustawiliśmy wartość wieku członka na 27.
Przykład 1:
#includeusing 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;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego programu, aby używać zdefiniowanych w nim funkcji.
- Uwzględnij przestrzeń nazw std, aby używać jej klas bez wywoływania jej.
- Utwórz strukturę o nazwie Person.
- Początek ciała struktury.
- Utwórz element członkowski struktury o nazwie obywatelstwo typu integer.
- Utwórz element członkowski struktury o nazwie wiek typu integer.
- Koniec ciała struktury.
- Wywołaj funkcję main (). Logikę programu należy dodać w treści tej funkcji.
- Utwórz instancję struktury Person i nadaj jej nazwę p.
- Ustaw wartość obywatelstwa członka struktury na 1.
- Ustaw wartość wieku elementu członkowskiego struktury na 27.
- Wydrukuj wartość obywatelstwa członka struktury na konsoli obok innego tekstu.
- Wydrukuj wartość wieku elementu struktury na konsoli obok innego tekstu.
- Program powinien zwrócić wartość, jeśli działa pomyślnie.
- Koniec funkcji main ().
Wskaźniki do struktury
Możliwe jest utworzenie wskaźnika, który wskazuje na strukturę. Jest to podobne do tworzenia wskaźników wskazujących na natywne typy danych, takie jak int, float, double itp. Zauważ, że wskaźnik w C ++ będzie przechowywać lokalizację pamięci.
Przykład 2:
#includeusing 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;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego programu, aby móc korzystać z jego funkcji.
- Dołącz przestrzeń nazw std do naszego programu, aby używać jej klas bez wywoływania jej.
- Utwórz strukturę o nazwie Length.
- Początek treści struktury Długość.
- Utwórz element członkowski struktury o nazwie meter typu integer.
- Utwórz element członkowski struktury o nazwie centymetry typu integer.
- Koniec korpusu struktury Długość.
- Wywołaj funkcję main ().
- Początek treści funkcji main ().
- Utwórz zmienną wskaźnikową * ptr i normalną zmienną l typu Length.
- Przechowuj adres zmiennej l w naszej zmiennej wskaźnikowej.
- Wyświetl na konsoli komunikat z prośbą o wpisanie wartości dla zmiennych liczników.
- Odczytaj wartość wprowadzoną przez użytkownika za pomocą klawiatury. Dostęp do mierników funkcji składowych można uzyskać tutaj za pomocą zmiennej wskaźnika.
- Wyświetl na konsoli komunikat z prośbą o wpisanie wartości dla zmiennych centymetrów.
- Odczytaj wartość wprowadzoną przez użytkownika za pomocą klawiatury. Dostęp do centymetrów funkcji członkowskiej uzyskuje się w tym miejscu za pomocą zmiennej wskaźnika.
- Wyświetl wartości odczytane przez użytkownika na konsoli obok innego tekstu.
- Program musi zwrócić wartość po pomyślnym wykonaniu.
- 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 zwykłego argumentu. Zmienne strukturalne można również przekazać do funkcji. Dobrym przykładem jest sytuacja, w której musisz wyświetlić wartości elementów członkowskich struktury. Pokażmy to:
Przykład 3:
#includeusing 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< Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego pliku. Będziemy wtedy używać jego funkcji bez błędów.
- Dołącz przestrzeń nazw std do naszego programu, aby używać jego klas. Nie będziemy musieli wywoływać przestrzeni nazw, aby używać jej klas.
- Utwórz strukturę o nazwie Person.
- Początek treści struktury Person.
- Utwórz element członkowski struct Person. Członek ma nazwę obywatelstwo i jest typu integer.
- Utwórz element członkowski struct Person. Członek ma nazwę wiek i jest typu integer.
- Koniec treści struktury Person.
- Utwórz funkcję, która jako argument przyjmuje instancję struct Person, p.
- Wywołaj główną funkcję. {Oznacza początek treści funkcji main ().
- Utwórz instancję struct Person i nadaj jej nazwę p.
- Uzyskaj dostęp do obywatelstwa zmiennej składowej struktury, używając wystąpienia struktury, p i przypisując jej wartość 1.
- Uzyskaj dostęp do zmiennej składowej struktury wiek przy użyciu wystąpienia struktury, p i przypisując jej wartość 27.
- Wywołaj funkcję i przekaż do niej instancję struktury Person, p, jako argument.
- Funkcja musi zwrócić wartość po pomyślnym wykonaniu.
- Koniec treści funkcji main ().
- Utwórz treść funkcji.
- Początek treści funkcji.
- Uzyskaj dostęp do wartości obywatelstwa członka struktury i wydrukuj ją na konsoli wraz z innym tekstem.
- Uzyskaj dostęp do wartości wieku elementu członkowskiego struktury i wydrukuj ją na konsoli obok innego tekstu.
- Koniec treści funkcji.
Ograniczenie struktury C ++
Poniżej przedstawiono ograniczenia konstrukcji:
- Typ danych struct nie może być traktowany jak wbudowane typy danych.
- Operatory takie jak + - i inne nie mogą być używane na zmiennych strukturalnych.
- Struktury nie obsługują ukrywania danych. Dostęp do elementów członkowskich struktury można uzyskać za pomocą dowolnej funkcji, niezależnie od jej zakresu.
- Statycznych elementów członkowskich nie można zadeklarować wewnątrz treści struktury.
- Nie można tworzyć konstruktorów wewnątrz konstrukcji.
Podsumowanie:
- Struktura to struktura danych, która przechowuje elementy danych należące do różnych typów.
- Podczas gdy tablica przechowuje elementy danych podobnego typu, struktura przechowuje elementy danych różnych typów.
- Struct należy używać, gdy nie oczekuje się zmiany wartości elementów danych.
- Dostęp do elementów członkowskich struktury uzyskuje się za pomocą operatora kropki (.).
- Musimy stworzyć instancję struktury.
- Aby stworzyć strukturę w C ++, używamy słowa kluczowego struct.
- Wskaźniki wskazujące na strukturę są tworzone w podobny sposób, jak tworzone są wskaźniki wskazujące na zwykłe typy.
- Strukturę można przekazać jako argument do funkcji w taki sam sposób, w jaki przekazywane są zwykłe funkcje.