A C nyelv megengedi, hogy bármilyen adattípusból tömböt hozhassunk létre. Létezhetnek tehát struktúrákból álló tömbök, pointerek tömbjei, sõt, tömbökbõl alkotott tömbök is. Ezek deklarátorai illetve kifejezései a mutatóknál megismert "ökölszabály" analógiájára hozhatók létre: minden szinkaktiakailag helyes kifejezésben bármely azonosító lecserélhetõ egy
azonosító[kifejezés]
alakra - más szóval alkalmazzuk a [ ] tömbtípust képzõ típusmódosító operátort a deklarációnál. Például:
int i; int ti[4]; struct tanulo tan; struct tanulo osztaly[40]; char *p; char *tp[10]; int (*pf)(int); int (*tpf[5])(int); float vekt[20]; float mat[5][20];Az elsõ két példa már ismerõs, a következõ kettõ mutatókból álló tömbök deklarációját illusztrálja. A tp karaktermutatók 10 elemû tömbje, tpf pedig olyan pointerekbõl felépített 5 elemû tömb, amelyek egészeket viszszaadó és egy egész paramétert váró függvényekre mutatnak. A fenti deklarációk szerint érvényes kifejezések a következõk:
p = tp[2] tp[0] *(tp[8] + 1) --tp[8] pf = tpf[4] (*tpf[2])(0)Az utolsó példa többdimenziós tömbök definiálását mutatja be. A C fordító nem ismeri ugyan a többdimenziós tömböket, de a tömbök tömbjeit igen. Az alábbi mat változó egy 5 sorból és 20 oszlopból álló mátrixnak tekinthetõ:
float mat[5][20];Ez például a következõ kifejezésekben szerepelhet:
vekt[3] = mat[1][2] mat[i][j] = 0.0Többdimenziós mátrixoknak kezdõértéket adni a szokásos aggregátum inicializáló szintaxissal lehet:
short tomb[ ][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { -1, -2, -3 } };A tomb változó e definíció hatására egy 4 sorból és 3 oszlopból álló kétdimenziós tömb lesz a fenti kezdõértékekkel. Figyeljük meg, hogy az indexméretek közül csak az elsõt hagytuk el, a fordítóra bízva annak meghatározását a kezdõértékek alapján. A második (és esetleges további) indexhatárok megadása mindig kötelezõ. Pontosan ez a többdimenziós tömbök legnagyobb hátránya, nem lehet õket dinamikusan kezelni. Nem írhatunk segítségükkel például olyan függvényt, amely egy n*r-es mátrixot öszszeszoroz egy r*m-essel, ahol a mátrixokon kívül n, r és m is paraméterek.