C programozás/Tömbök

A Wikikönyvekből, a szabad elektronikus könyvtárból.
Ugrás a navigációhoz Ugrás a kereséshez


A tömbök lehetővé teszik, hogy C nyelven összetartozó értékeket tároljunk egyetlen változónév alatt, és egész számokkal (indexekkel) hivatkozhassunk az egyes elemekre. A legegyszerűbb, ha úgy gondolunk a tömbökre, mint értékek rendezett sorozatára, ahol minden egyes elem azonos típusú. A tömbök gyakran segítik a programozó munkáját olyan módon, hogy hatékonyan és átláthatóan rendezze el az adathalmazokat.

Később megismerkedünk majd a mutatók (angolul pointer) fogalmával, amely alapvető a C nyelvben, és kibővíti a tömbök lehetőségeit. Itt csak a tömbök létrehozásával és használatával foglalkozunk.

Tömbök[szerkesztés]

Ha egy hat egész számból álló tömböt akarunk létrehozni C nyelven, ezt írjuk:

int szamok[6];

Létrehozhatunk karakterekből álló tömböt is. Az alábbi példában hat karakterből álló tömböt hozunk létre betuk néven:

char betuk[6];

és így tovább.

Ha inicializálni szeretnénk a deklarálás során, a következő módon tehetjük:

int napi_atlaghomerseklet[9]={10,18,20,17,16,12,15,18,22};

Ebben az esetben a tömb mérete elhagyható, a tömb automatikusan a megadott értékek számának megfelelő mérettel jön létre. Az alábbi tehát egyenértékű az előzővel.

int napi_atlaghomerseklet[]={10,18,20,17,16,12,15,18,22};

Ez azért hasznos, mert könnyedén hozzáadhatunk vagy eltávolíthatunk inicializáló elemeket anélkül, hogy a tömb méretét módosítani kellene.

Ha a méretet megadtuk, de nem adunk az összes elemnek kezdőértéket, a maradék elemek értéke 0 lesz. Ez nagyon hasznos, különösen, ha nagyon nagy tömbjeink vannak.

int napi_atlaghomerseklet[365]={18,12,21};

A fenti példa a tömb első három elemét beállítja a megadott értékekre, a többit 0 értékre.

Ha a tömb egy elemét szeretnénk elérni, például az előbb deklarált esetben, a következő kód 12-t fog helyezni az x változóba:

int x;
x = napi_atlaghomerseklet[1];

A tömbök indexelése a C nyelvben 0-val kezdődik, nem 1-gyel. A fenti tömb legelső elemére napi_atlaghomerseklet[0] formában hivatkozhatunk. A tömb legutolsó elemének az indexe a tömb mérete minusz egy. A fenti tömb esetén az indexek 0-tól 364-ig mennek. A C nyelv nem garantálja a határok ellenőrzését a tömbelemek elérésekor. A fordító lehet, hogy nem jelez hibát a következő esetben (habár a jobbak megteszik):

int y;
int z = 9;
int pontok[6] = { 1, 2, 3, 4, 5, 6 };
// Példák, amelyekben nem tényleges tömbbeli elemre hivatkozunk.
// A fordításkor nem minden fordító jelez hibát.
y = pontok[15];
y = pontok[-4];
y = pontok[z];

A tömbelemeket használhatjuk olyan helyeken, ahol egy változót használhatnánk: egy kifejezésben, de egy értékadás baloldalán is. Az utóbbi lehetőséget ad arra, hogy megváltoztassuk a tömb egy elemének értékét. Az alábbi példa duplájára növeli a pontok tömb 4-es indexű (azaz 5.) elemét:

pontok[4] = 2*pontok[4];

vagy rövidebben:

pontok[4] *= 2;