Struktury w C++ (struct)

Transkrypt

Struktury w C++ (struct)
Struktury w C++ (struct)
W pewnych sytuacjach, typy zmiennych, które oferuje język C++ mogą być niewystarczające.
Mamy do dyspozycji szereg typów prostych takich jak int, char, bool czy typy złożone
zwane tablicami. Tablica to taka struktura danych, która przechowuje wiele elementów tego
samego typu. Co jeśli potrzebujemy pracować na obiektach, których składowe są różnych typów?
Na ratunek przychodzą nam struktury, czyli złożone typy danych, które definiuje programista.
Przeanalizujmy przykład. Załóżmy, że chcemy przechować dane samochodu takie jak:
•
•
•
•
marka,
model,
rok produkcji,
pojemność silnika.
Moglibyśmy stworzyć cztery zmienne oraz dobrać im typy lub stworzyć nowy typ, którego
elementami będą omawiane składowe. Taki typ nazywamy strukturą.
Tworzenie struktury
Struktury tworzymy za pomocą słowa kluczowego struct podając jej nazwę (tak będzie nazywał się
typ przez nas stworzony), a następnie w nawiasie klamrowym definiujemy jej elementy:
struct nazwa{
typ nazwa_elementu;
typ nazwa_drugiego_elementu;
typ nazwa_trzeciego_elementu;
...
};
Struktura samochód wyglądałaby następująco:
struct samochod{
char marka[20]; //elementy struktury
char model[20];
int rok_produkcji;
double pojemnosc;
};
Jeśli strukturę zdefiniujemy przed funkcją main(), będzie ona widoczna dla wszystkich bloków
programu (będzie globalna). Na końcu stawiamy średnik.
Tworzenie zmiennych typu strukturalnego
Po stworzenie struktury mamy nowy typ - w naszym przypadku będzie nazywał się on samochod.
Możemy teraz tworzyć zmienne na jego podstawie. Nie różni się ono niczym od tworzenia
zmiennych opartych na typach wbudowanych takich jak int, char itp. Prześledźmy przykład:
int main()
{
int a; //tworząc zmienną podajemy jej typ i nazwę
samochod renault; //w tym przypadku jest tak samo, poniewaz
//samochod jest typem, a renault nazwą
}
return 0;
Odwoływanie się do elementów składowych
Do elementów odwołujemy się za pomocą kropki, podając najpierw nazwę zmiennej strukturalnej,
a następnie po kropce nazwę składowej struktury:
int main()
{
samochod renault;
cin>>renault.marka; //odwołanie się do pola marka
cin>>renault.pojemnosc; //odwołanie się do pola pojemnosc
cout<<"Marka: "<<renault.marka<<", pojemnosc: "
<<renault.pojemnosc<<endl;
system("pause");
return 0;
}
Nadanie wartości początkowych
Wartości początkowe nadajemy podobnie jak w tablicach. Taki sposób można zastosować tylko
przy inicjowaniu zmiennej strukturalnej. Wartości elementów podajemy w nawiasie klamrowym
pamiętając o kolejności przypisywanych elementów. Jeśli pierwszym elementem jest ciąg znaków,
to taki ciąg powinien znaleźć się jako pierwszy. Dotyczy to wszystkich elementów składowych.
Rozpatrzmy przykład:
int main()
{
//nadanie wartości początkowych
samochod renault = {"renault","megane",2013,2.0};
//wypisanie wartości elementów struktury
cout<<renault.marka<<endl<<renault.model
<<endl<<renault.rok_produkcji
<<endl<<renault.pojemnosc<<endl;
system("pause");
return 0;
}
Podsumowując, zmienne strukturalne stosujemy podobnie jak zwykłe zmienne rozszerzając je o
dodatkowe właściwości. Możemy je przypisywać do siebie, tworzyć tablice struktur, wskaźniki itp.
Globalnie i lokalnie
Struktura stworzona przed funkcją main() będzie strukturą globalną, czyli każdy podprogram będzie
mógł z niej korzystać. Jeśli stworzymy ją wewnątrz jakiegoś bloku, będzie lokalną i widoczna tylko
w tym miejscu. Popatrzmy na przykłady:
Globalnie:
#include<iostream>
using namespace std;
//struktura globalna widoczna w każdym zakątku
struct samochod{
char marka[20]; //elementy struktury
char model[20];
int rok_produkcji;
double pojemnosc;
};
int main()
{
samochod peugeot = {"Peugeot","407",2013,2.7};
}
return 0;
Lokalnie:
#include <iostream>
using namespace std;
int main()
{
//struktura lokalna widoczna tylko w main()
struct samochod{
char marka[20]; //elementy struktury
char model[20];
int rok_produkcji;
double pojemnosc;
};
samochod peugeot = {"Peugeot","407",2013,2.7};
return 0;
}

Podobne dokumenty