C programozás/Tömbök
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;