Definiowanie struktur
Powróćmy do naszego przykładu z bazą danych pracowników firmy. Do przechowywania informacji o pracownikach użyliśmy trójwymiarowej tablicy
Rozwiązanie takie ma pewne wady
- łatwo się pogubić w indeksach - trzeba pamiętać, co oznaczają poszczególne numery w tablicy
- marnotrawstwo pamięci - na ogół imiona są znacznie krótsze niż nazwiska (mogą być podwójne). Deklaracja tablicy trójwymiarowej narzuca konieczność przydzielenia takiej samej maksymalnej długości napisów dla wszystkich elementów tablicy
Język C dostarcza słowa kluczowego struct. Służy ono do tworzenia nowych, zdefiniowanych przez programistę typów. Najprostsza składnia jest następująca:
struct [OpcjonalnaNazwaStruktury]
{
// deklaracje zmiennych, z których składa się struktura
} [opcjonalnieListaDeklarowanychZmiennych];
Uwaga:
Definicja struktury musi kończyć się średnikiem! Brak średnika, to nagminny błąd nie tylko młodych programistów. Informacja o błędzie wyświetlana przez kompilator jest na ogół nie związana z linią programu, w której zapomnieliśmy średnika.
Struktura opisująca pracownika może wyglądać tak:
struct Pracownik
{
string imie;
string nazwisko;
string miejscowosc;
string adres;
string stanowisko;
float pensjaPodstawowa;
};
W powyższym przykładzie:
- Zadeklarowaliśmy nową strukturę o nazwie Pracownik.
- Stworzyliśmy nowy typ o nazwie Pracownik. Od tej pory można definiować zmienne i tworzyć obiekty tego typu.
- Nie zadeklarowaliśmy żadnej zmiennej typu Pracownik - lista zmiennych pomiędzy kończącym nawiasem a średnikiem jest pusta. Jest to typowa sytuacja.
- Kompilator nie wygeneruje żadnego kodu tak długo, aż nie użyjemy tej struktury w programie. Jest to tylko pouczenie dla kompilatora, że powstał nowy typ i można go będzie używać.