Język C umożliwia deklarowanie własnych struktur danych. Struktura to obiekt złożony z jednej lub kilku zmiennych (być może różnych typów) zgrupowanych pod jedną nazwą. W niektórych językach struktury nazwane są rekordami. Struktury ułatwiają zorganizowanie danych, ponieważ grupę powiązanych ze sobą zmiennych pozwalają traktować jako jeden obiekt.
Definiowanie struktur
Przykładem prostej i zrozumiałej struktury może być punkt na płaszczyźnie. Z założenia do opisania punktu wystarczą dwie składowe:x, y. Taką strukturę możemy zapisać w sposób następujący:
struct punkt{
int x;
int y;
};
Słowo kluczowestructrozpoczyna deklarację struktury, którą tworzy lista deklaracji zawarta pomiędzy nawiasami klamrowymi. Po słowie struct może występować opcjonalnie nazwa będąca etykietą tworzonej struktury. Etykieta identyfikuje strukturę i ułatwia deklarację obiektów danego typu. Zmienne zadeklarowane wewnątrz struktury to jej składowe. Deklaracja struktury to deklaracja typu, możemy po niej podać nazwy zmiennych danego typu tak jak w przypadku zwykłych zmiennych:
struct {....}a,b,c;
zapis taki odpowiada deklaracji:
int d,e,f;
Oczywiście w pierwszym przypadku definiujemy zmienne typustruct {...}, w drugim natomiast zmienne typu int. Jeśli w deklaracji struktury użyliśmy etykiety, to może ona być użyta do deklaracji zmiennych danego typu. Przykładowo zmienne typu punkt możemy zadeklarować na dwa spooby:
struct punkt{
int x;
int y;
}p1,p2;
lub:
struct punkt{ int x; int y; }; . . . . struct punkt p1,p2;
Identycznie jak w przypadku "zwykłych" zmiennych strukturę można zainicjować wartościami początkowymi:
struct punkt p1={10,12};
Dostęp do poszczególnych składowych umożliwia konstrukcja:
nazwa_struktury.składowa
Przykładowo dla zadeklarowanej wcześniej struktury p1:
p1.x;
Dozwolonymi operacjami dla struktur są: kopiowanie w całości na inną strukturę, pobieranie adresu struktury za pomocą operatora &, odwoływanie się do składowych struktur. Nie można natomiast porównywać całych struktur ze sobą.