C programozás IV. lecke: Tömbök (Listák) kezelése
A programokban gyakran előfordul, hogy több azonos típusú adatot kell egyszerre tárolnunk és kezelnünk. Erre szolgálnak a tömbök, amelyek lehetővé teszik, hogy egyetlen változónév alatt több értéket tároljunk.
1. Bevezető: Mik azok a tömbök?
A C programozási nyelvben a tömbök (listák) olyan adatszerkezetek, amelyek több azonos típusú adat tárolására szolgálnak. Használatuk különösen hasznos például egy osztály tanulóinak jegyei, mérési adatok vagy nagyobb adatsorok kezelésekor.
A tömbök legfontosabb tulajdonságai:
• A tömb elemei a memóriában egymás után, folytonosan helyezkednek el.
• Minden elem egy saját indexszel rendelkezik.
• A C nyelvben az indexelés mindig 0-tól kezdődik.
2. Tömbök deklarálása és inicializálása
Tömb létrehozásakor meg kell adnunk az elemek adattípusát, valamint a tömb méretét. A statikus tömbök mérete fordításkor rögzített, ezért futás közben már nem módosítható.
#include <stdio.h>
int main() {
// Deklaráció inicializálás nélkül (5 elem)
int szamok[5];
// Deklaráció és inicializálás egy lépésben
int jegyek[5] = {5, 4, 3, 5, 2};
// Részleges inicializálás
int pontszamok[10] = {10, 20};
// Automatikus méretmeghatározás
int korok[] = {18, 21, 25, 30};
return 0;
}
3. Elemek elérése és módosítása (Indexelés)
Egy tömb adott elemét a szögletes zárójelek [] segítségével érhetjük el. Nagyon fontos, hogy ne lépjük túl a tömb méretét, mert a C nyelv ezt futásidőben nem ellenőrzi automatikusan, ami memóriahibákhoz (buffer overflow) vezethet.
// Az első elem módosítása (0. index)
jegyek[0] = 4;
// A harmadik elem kiíratása (2. index)
printf("A harmadik diák jegye: %d\n", jegyek[2]);
4. Tömbök bejárása ciklusokkal
A tömbök valódi előnye akkor mutatkozik meg, amikor ciklusokat használunk az összes elem feldolgozására. A leggyakrabban erre a for ciklust alkalmazzuk, amely gyorsan végighalad az összes indexen.
int i;
for(i = 0; i < 5; i++) {
printf("A(z) %d. jegy: %d\n", i + 1, jegyek[i]);
}
5. Többdimenziós tömbök (Mátrixok)
A C nyelv támogatja a többdimenziós tömböket is. Ezek közül a leggyakoribb a kétdimenziós tömb, amelyet gyakran mátrixként emlegetünk. Segítségével táblázatos adatokat vagy kétdimenziós elrendezéseket modellezhetünk.
// 3x4-es mátrix (3 sor, 4 oszlop)
int matrix[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// Elem elérése: 2. sor, 3. oszlop
printf("Kiválasztott elem: %d\n", matrix[1][2]); // Eredmény: 7