A korszerû programozási nyelvek a struktúrált programozást nemcsak vezérlési, hanem adatstruktúrák biztosításával is kötelesek támogatni, de amíg a vezérlési struktúráknak egy jól meghatározott köre van, addig az adatstruktúrák annyifélék lehetnek, ahány feladatra kell megoldást találni. Ezért új vezérlõutasítások létrehozását a programozási nyelvek ritkán támogatják, ellenben adatstruktúrák definiálását lehetõvé kell tenniük. (Az objektumorientált programozás, így a C++ is még ezen a gondolatkörön is túllép: az összetett adatstruktúrákhoz a hozzájuk tartozó mûveleteket is definiálva kapjuk az ún. objektumokat).
A C nyelvben az elemi típusokból felépített adatstruktúrákat aggregátumoknak nevezzük, és alapvetõen háromfélék lehetnek: tömbök, struktúrák és unionok. Ez az elhatárolás azonban nem zárja ki ezek tetszõleges kombinációit, például szervezhetünk struktúra elemû tömbökbõl (és egyéb összetevõkbõl) új struktúrát vagy uniont.
Az eddig megismert egyetlen aggregátum, az egydimenziós
tömb, a következõ elõnyöket biztosítja:
tetszõleges eleméhez azonos idõ alatt lehet hozzáférni
(random access), mérete dinamikusan is beállítható
(lásd késõbb), sõt tetszõleges folytonos
része önálló tömbként is kezelhetõ.
Hátránya, hogy minden elemének azonos típusúnak
kell lennie. A most ismertetésre kerülõ aggregátum,
a struktúra viszont lehetõséget biztosít arra,
hogy logikailag összetartozó, de különbözõ
típusú elemeket egységbe fogva kezelhessünk.
Minden definiált adatstruktúra a fordító számára
új típusként jelentkezik (typedef-fel név
is rendelhetõ egy struktúra típushoz), és a
továbbiakban azonos módon használhatjuk, mint az elemi
típusokat (azaz deklarálhatunk illetve definiálhatunk
ilyen típusú objektumokat, alkalmazhatjuk rá a sizeof
operátort, részt vehet típusmódosító
szerkezetben, képezhetünk ilyen típusra mutató
pointereket stb.). A korszerû C implementációk - mint
például a BORLAND C++ - lehetõvé teszik (azonos
típusú) struktúraváltozók közt
a közvetlen értékadást, struktúrák
szerepeltetését függvények paramétereként
illetve visszatérési értékeként is.