6 STRUKTURY
X
Obie współrzędne można zadeklarować jako składowe struktury, na przykład tak:
struct point { int x; int y;
Słowo kluczowe struct rozpoczyna deklarację struktury, którą tworzy lista deklaracji zawartych między nawiasami klamrowymi. Po słowie struct może występować opcjonalna nazwa, zwana etykietką struktury (w naszym przykładzie point). Etykietka identyfikuje ten rodzaj struktury i może być później używana jako skrót dla tej częśc: deklaracji, która występuje w nawiasach klamrowych.
O nazwanych zmiennych występujących w strukturze mówi się, że są składowymi struktury. Składowej struktury, etykietce i normalnej zmiennej (tj. nie będącej składową struktury) można nadać tę samą nazwę. Nie ma obawy o konflikt, ponieważ są one zawsze rozróżnialne przez kontekst, w jakim mogą się pojawić. Co więcej, takie same nazwy można nadać składowym różnych struktur, z tym jednak, że do dobrego tonu należy używanie takich samych nazw jedynie dla obiektów ściśle ze sobą związanych.
Deklaracja struct jest definicją typu. Po prawej klamrze kończącej listę składowych struktury może występować lista zmiennych, tak jak po każdym z podstawowych typów. Zatem definicja
struct {...} x, y, z;
odpowiada składniowo definicji
int x, y, z;
w tym sensie, że obie deklarują x, y i z jako zmienne wskazanego typu oraz rezerwuj1! dla nich pamięć.
6.1 PODSTAWOWE WIADOMOŚCI O STRUKTURACH__
Deklaracja struktury, po której nie występuje lista zmiennych, nie pamięci; po prostu opisuje wzorzec lub kształt struktury. Jeżeli jedi wiera etykietkę, to etykietka może być później użyta w definicjach konkretnych „wcieleń” struktury. Na przykład, mając już deklarację struktury point, możemy zdefiniować zmienną pt jako strukturę tego typu:
struct point pt;
Strukturę można zainicjować dopisując na końcu jej definicji listę wartości początkowych jej składowych; każda wartość początkowa musi być wyrażeniem stałym:
struct point maxpt = { 320, 200 };
Automatyczną strukturę można także zainicjować za pomocą przypisania lub wywołania funkcji, która zwraca strukturę właściwego typu.
W wyrażeniach dostęp do składowej określonej struktury umożliwia konstrukcja nazw a-struktury. składowa
Operator składowej struktury . (kropka) wiąże nazwę struktury z nazwą składowej. Aby wypisać współrzędne punktu pt, możemy zatem użyć instrukcji
printf(”%d,%d”, pt.x, pt.y);
a do wyliczenia algebraicznej odległości między punktami pt i (0,0) zastosować znany algorytm
double dist, sqrt(double); /* sqrt: pierwiastek kwadratowy */ dist = sqrt((double)pt.x * pt.x + (double)pt.y * pt.y);
Struktury mogą być zagnieżdżone. Jedną z reprezentacji prostokąta jest para punktów, które wskazują dwa przeciwległe wierzchołki:
_ pt2 pti
---- x
175