W odróżnieniu jednak od krotek, dopuszcza się modyfikację pól struktury.

Struktura w języku C /* deklaracja */ struct miasto { long ludnosc; char* rzeka;

/* definicja */ struct miasto Poznan; Poznan.ludnosc = 550000; Poznan.rzeka = (char*)malloc(sizeof(char)*6); strncpy(Poznan.rzeka, "Warta\0", 6);

Struktury w C mogą zawierać także pola zajmujące mniej niż 1 bajt. Aby zadeklarować takie pole, należy podać po dwukropku liczbę bitów.

struct liczba { unsigned int mlodszy_bajt :8; unsigned int starszy_bajt :7; unsigned int znak :1;

Pola bitowe mogą mieć typ int lub unsigned int. W tym pierwszym wypadku najstarszy bit będzie przeznaczony na znak danego pola.

Wyrównanie pól struktury W języku C (a także C++) rozmiar struktury może być większy niż suma rozmiarów poszczególnych pól struktury. Wynika to z umieszczania przez kompilator pól pod adresami wyrównanymi do granicy słowa maszynowego (zwykle 2, 4 lub 8 bajtów), co zapewnia szybszy dostęp przez mikroprocesor, ale jednocześnie utrudnia przekazywanie (np.