• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Działanie Struktur

Object Storage Arubacloud
0 głosów
424 wizyt
pytanie zadane 13 maja 2015 w C i C++ przez Iras Obywatel (1,800 p.)
otagowane ponownie 13 maja 2015 przez Iras
Cześć, mógłby mi ktoś wyjaśnić działanie struktur ? Z góry dzięki. Pozdrawiam

5 odpowiedzi

+2 głosów
odpowiedź 13 maja 2015 przez hit02 Nałogowiec (33,970 p.)

Można powiedzieć, że struktura, to tablica zmiennych o różnym typie. Oczywiście nie używa się ich tak jak tablic, ale można je tak traktować i szczeże mówiąc jest to bardzo bliskie prawdzie. Przykładowo mając strukturę

struct przyklad
{
    char a;
    int b;
    float c;
};

Po zadeklarowaniu jej na przykład czymś takim:

struct przyklad test;

do pola a odwołasz się w taki sposób:

test.a;

Mówiłem, że możesz je traktować jak tablice i w związku z tym strukturę możesz traktować jak wskaźnik na jej pierwsze pole, ale do pola b nie możesz się odwołać w taki sposób:

*(test + sizeof(a));

ponieważ kompilator może pozmieniać kolejność zmiennych w celach optymalizacyjnych - na x86 odwołania są szybsze do zmiennych na adresach podzielnych przez 4 lub przez rozmiar zmiennej - tego już nie pamiętam.

Co do wskaźników, to mając wskaźnik na strukturę odwołujesz się do jej pól na przykład w taki sposób:

test->c;
komentarz 17 maja 2015 przez Orchidea Nowicjusz (100 p.)
Pisałam w Javie, tam mam klasy. Wiem, że struktura ma pola domyślnie publiczne, klasa domyślnie prywatne.

W "Thinking in C++" znajdziemy: "Słowo kluczowe struct umożliwia połączenie grupy zmiennych w strukturę. Po utworzeniu struktury można zdefiniować wiele egzemplarzy zmiennych ustanowionego przez nią „nowego" typu danych". Wyczytałam również, że klasy powstały ze struktur - stąd ich podobna składnia.

Mógłby ktoś wytłumaczyć w jakim celu w C++ używamy struktur w praktyce? Czy są sytuacje, w których lepiej użyć struktur zamiast klas?  Z góry dziękuję za odpowiedź.
komentarz 17 maja 2015 przez hit02 Nałogowiec (33,970 p.)
Myślę, że pisząc w C++ lepiej jest używać klas ponieważ nieco bardziej wspierają one duże projekty.

Klasy bardzo się przydają pisząc w C bo w C nie ma klas lub na przykład pisząc OS ponieważ nad strukturą ma się nieco większą kontrolę, a procesor korzysta ze struktur na przykład z deskryptorów segmentowych.

Struktury będą się również przydawać korzystając z API systemowego bo na przykład WinAPI zawiera bardzo wiele struktur.
+1 głos
odpowiedź 13 maja 2015 przez Ehlert Ekspert (212,670 p.)
Struktura to własny typ danych funkcjonujący od C. Składanie sprawdź na Cpp0x. Struktura to np. Klasa postaci. Struktura warrior zawiera siłę, pancerz, szybkość itd.
komentarz 13 maja 2015 przez Iras Obywatel (1,800 p.)
czyli struktura to inaczej klasa ? tylko w c nazywa sie struktura a w c++ klasą ?
komentarz 13 maja 2015 przez Ehlert Ekspert (212,670 p.)
Struktura jest klasa ogólnie dostępna. Nie ma klauzul dostępności
komentarz 13 maja 2015 przez Dorion300 Szeryf (90,250 p.)
Klasa przechowuje zmienne i metody, Można z niej dziedziczyc i zmieniać uprawnienia za pomocą private,public A struktura to taka mocno ograniczona klasa która jedynie przechowuje zmienne.
+1 głos
odpowiedź 13 maja 2015 przez iwan9449 Pasjonat (20,810 p.)

Struktura jest to pewnego radzaju "pojemnik" na dane, który może przechowywać różne typy danych. Tworząc strukturę tworzymy tak na prawdę nowy typ danych. Struktury świetnie nadają się do tworzenia baz danych.

struct Osoba
{
     string imie;
     string nazwisko;
     int wiek;
};

W ten sposób stworzyliśmy nowy typ danych, który zawiera 3 pola, 2 typu string i 1 typu int. Możemy teraz stworzyć nową zmienną typu Osoba i przypisać do jej pól jakieś wartości. Pola w strukturach są domyślnie publiczne, zatem możemy dostać sie bezpośrednio do nich stosując operator kropki (jeżeli tworzymy zmienną dynamiczną, do jej pól odwołujemy się za pomocą operagtora "->)":

Osoba os1;
os1.imie = "Jan";
os1.nazwisko = "Nowak";
os1.wiek = 30;

Osoba *os2 = new Osoba;
os2->imie = "Ania";
os2->nazwisko = "Kowalska";
os2->wiek = 25;
delete os2;

​Oczywiście strutury dają nam możliwośc stworzenia np. tablicy struktur, bądź listy co jest bardzo wygodnym rozwiązaniem i pozwala nam trzymać wszystkie "Osoby" w jednej tablicy bądz na jednaj liście ;)

Mógłbyś sprecyzować czy pytasz o struktury w C czy w C++, ponieważ te z C są znacznie bardziej ograniczone :)

Pozdrawiam!

komentarz 13 maja 2015 przez Iras Obywatel (1,800 p.)
chodzi mi o c++
komentarz 13 maja 2015 przez iwan9449 Pasjonat (20,810 p.)
Struktury w C++ działa w zasadzie tak samo jak klasy, z tą różnicą, że pola w strukturze są dumyślnie publiczne, a w klasie prywatne. :)
komentarz 13 maja 2015 przez Iras Obywatel (1,800 p.)
O! i o taką odpowiedź mi chodziło dzięki :)
+1 głos
odpowiedź 13 maja 2015 przez Bondrusiek Maniak (61,370 p.)
Struktura - to złożony typ danych, grupujący logicznie ze sobą dane różnego typu w jednym obszarze pamięci.

Struktura to taka klasa gdzie domniewany dostęp do składników struktury(pól) jest publiczny tzn można się odwoływać do struktury z każdego miejsca programu.

Struktury w C++ są deklarowane tak jak w C, jednak oprócz pól mogą zawierać także funkcje (tzw. metody) i mogą dziedziczyć z innych klas i struktur.
+1 głos
odpowiedź 13 maja 2015 przez Dorion300 Szeryf (90,250 p.)
To taki własny typ danych który przechowuje inne dane o określonej typie danych. To taka szufladka którejwwkładamy określone przez nas zmienne, obiekty

Podobne pytania

+1 głos
1 odpowiedź 260 wizyt
pytanie zadane 20 stycznia 2022 w C i C++ przez Krzysztofs1234 Użytkownik (890 p.)
–1 głos
2 odpowiedzi 294 wizyt
pytanie zadane 12 marca 2021 w C i C++ przez bartaser15 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 232 wizyt
pytanie zadane 14 lutego 2021 w C i C++ przez poczatekcpp Nowicjusz (150 p.)

92,565 zapytań

141,416 odpowiedzi

319,599 komentarzy

61,950 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...