Struct
Struktura jest obiektem składającym się ze zbioru nazwanych składowych o różnych typach. Specyfikator struktury ma postać:
struct [<nazwa_typu_strukturalnego >] {
[<typ> <nazwa_zmiennej [,nazwa_zmiennej, ...]>] ;
} [<nazwa_zmiennej_strukturalnej>] ;
Przykład struktury w języku C:
Aby dostać się do elementu w strukturze stosujemy notację:
Na przykład:
Możemy także zadeklarować tablicę struktur:
Pola struktur możemy inicjować w miejscu ich deklaracji. Wartości na liście inicjacyjnej muszą być zgodne z liczbą, kolejnością i typami danych pól danej struktury:
Zastanówmy się ile zajmują struktury deklarowane przez nas w pamięci.Pola struktury są umieszczane w pamięci zgodnie z kolejnością występowania w deklaracji. Każde pole struktury zajmuje osobny obszar pamięci. Łączny rozmiar struktury jest równy sumie rozmiarów jej składowych.Rozmiar struktury jest zawsze większy lub równy sumie rozmiarów jej składowych.
Rozmiar powyższej struktury będzie równy 20+20+4=44 bajtów.
Składowymi struktur może być oczywiście inna struktura. Aby odwołać się do pola struktury będącej składową innej struktury należy wykorzystać kropkę.
struct miejsce_zamieszkania{
char kraj[20];
char wojewodztwo[40];
char powiat[40];
char miasto[40];
char dzielnica[40];
char ulica[40];
};
struct rodzina{
char imie[20];
char nazwisko[20];
int wiek;
miejsce_zamieszkania adres;
}osoba;
strcpy(osoba.adres.kraj,"Polska");
Zastanówmy czy możemy powoływać wskaźnik na strukturę ?? Oczywiście ,że tak. Podobnie jak na inne zmienne wskaźnik może wskazywać na strukturę:
Aby dostać się do elementu struktury możemy to zrobić na dwa sposoby.Zapis korzen->key=10; jest (z definicji) równoważny (*korzen).key=10;, ale bardziej przejrzysty i powszechnie stosowany.
struct [<nazwa_typu_strukturalnego >] {
[<typ> <nazwa_zmiennej [,nazwa_zmiennej, ...]>] ;
} [<nazwa_zmiennej_strukturalnej>] ;
Przykład struktury w języku C:
Aby dostać się do elementu w strukturze stosujemy notację:
[<nazwa_zmiennej_strukturalnej>].element=zmienna;
Na przykład:
osoba.wiek=20;
Możemy także zadeklarować tablicę struktur:
Pola struktur możemy inicjować w miejscu ich deklaracji. Wartości na liście inicjacyjnej muszą być zgodne z liczbą, kolejnością i typami danych pól danej struktury:
struct rodzina{
char imie[20];
char nazwisko[20];
int wiek;
};
Ojciec={"Adam", "Kowalski",45},
Matka={"Ewa", "Kowalska",39};
char imie[20];
char nazwisko[20];
int wiek;
};
Ojciec={"Adam", "Kowalski",45},
Matka={"Ewa", "Kowalska",39};
Zastanówmy się ile zajmują struktury deklarowane przez nas w pamięci.Pola struktury są umieszczane w pamięci zgodnie z kolejnością występowania w deklaracji. Każde pole struktury zajmuje osobny obszar pamięci. Łączny rozmiar struktury jest równy sumie rozmiarów jej składowych.Rozmiar struktury jest zawsze większy lub równy sumie rozmiarów jej składowych.
Rozmiar powyższej struktury będzie równy 20+20+4=44 bajtów.
Składowymi struktur może być oczywiście inna struktura. Aby odwołać się do pola struktury będącej składową innej struktury należy wykorzystać kropkę.
struct miejsce_zamieszkania{
char kraj[20];
char wojewodztwo[40];
char powiat[40];
char miasto[40];
char dzielnica[40];
char ulica[40];
};
struct rodzina{
char imie[20];
char nazwisko[20];
int wiek;
miejsce_zamieszkania adres;
}osoba;
strcpy(osoba.adres.kraj,"Polska");
Zastanówmy czy możemy powoływać wskaźnik na strukturę ?? Oczywiście ,że tak. Podobnie jak na inne zmienne wskaźnik może wskazywać na strukturę:
Aby dostać się do elementu struktury możemy to zrobić na dwa sposoby.Zapis korzen->key=10; jest (z definicji) równoważny (*korzen).key=10;, ale bardziej przejrzysty i powszechnie stosowany.
ferdzikamil dnia 30-09-2009 15:08
O co chodzi wyjaśnij to po ludzku .
flabra dnia 30-09-2009 13:58
nie jestem pewien czy mnozenie bytow, to dobry pomysl. lepiej popraw i rozwin swoj poprzedni art.


