Kétdimenziós tömbök, programozás C és C
A lehetővé teszi, hogy a többdimenziós tömböket. A legegyszerűbb fajta többdimenziós tömb egy két dimenziós tömb. Kétdimenziós tömb - egy sor egydimenziós tömböket. A kétdimenziós tömb nyilvánították az alábbiak szerint:
array_name típusa [méret a második mérés] [első mérési felbontás];
Ahhoz, hogy a elemet indexek 3, 5 d a tömb kell használni
A következő példában, a kétdimenziós tömb rögzített szám 1 és 12, majd a tömb jelenik meg.
#include
int main (void)
int T, I, NUM [3] [4];
/ * * Száma letöltési /
a (t = 0; t<3; ++t)
for (i = 0; i<4; ++i)
NUM [t] [i] = (t * 4) + i + 1;
Ebben a példában, NUM [0] [0] 1, NUM [0] [1] értéke 2, NUM [0] [2] - 3, és így tovább. NUM [2] [3] értéke 12.
Kétdimenziós tömbök tárolják egy mátrixban, ahol az első index felelős egy húr, és a második oszlop -ez. Ez azt jelenti, hogy a megfelelő index gyorsabban változik, mint a bal, ha mozoghat a tömb a sorrendben az elemek elrendezése a memóriában. Ábra. Ez azt mutatja, grafikus ábrázolása egy kétdimenziós tömb a memóriában. A bal oldali index lehet tekinteni, mint egy pointert a húr.
A bájtok száma szükséges memória elhelyezésére a két-dimenziós tömb, a következőképpen számítjuk ki:
bájt = méret a második mérés felbontása az első mérés * * sizeof (bázis típusú)
Feltételezve, hogy a rendszer egy 2 bájtos egész számokat, az egész tömb méretei 10 5 fog 10 * 5 * 2, azaz a 100 byte.
Amikor a két-dimenziós tömböt használjuk függvényében érv, egy mutatót az első elemet. A függvény megkapja a kétdimenziós tömb, akkor legalább, méretének meghatározására az első mérés, mivel a fordítóprogram tudnia kell a hossza az egyes vonal megfelelő indexelés a tömbben. Például, a feladata, hogy fogadja kétdimenziós egész tömb a méretei 5, 10, akkor nyilvánítják a következőképpen:
Meg tudja határozni a méret a második dimenzióban, de ez nem kötelező. A fordító tudnia kell a mérete az első dimenzió megfelelő típusú szolgáltatók
függvényében. Ha a szöveg nem ismert, de nem lehet tudni, hol a következő sorban kezdődik.
Rövid alábbi program használ egy kétdimenziós tömb tárolja az értékelés minden tanuló a tanár osztályteremben. A program feltételezi, hogy a tanár három osztály van, és minden osztály legfeljebb 30 versenyző. Figyeljük meg, hogy tudom elérni a fokozat az egyes funkciók:
#include
#include
#include
#include
#define OSZTÁLYOK 3
#define osztályzatok 30
int grade [óra] [osztályzatok];
void disp_grades (int g [] [osztályzatok]), enter_grades (void);
int get_grade (int num);
int main (void) / * program tárolására becslések * /
char ch;
for (;;) do printf ( "(E) nter fokozat \ n");
printf ( "(R) ELENTÉS fokozat \ n");
printf ( "(Q) uit \ n");
ch = toupper (getche ());
>
while (ch! = 'E' ch! = 'R' ! Ch = 'Q');
kapcsolót (ch)
esetben 'E':
enter_grades ();
break;
esetén 'R':
disp_grades (grade);
break;
esetben a 'Q':
vissza 0;
>
>
>
/ * A minden tanuló fokozatok * /
void enter_grades (void)
int t, i;
a (t = 0; t
>
>
/ * A bejegyzés értékelése * /
int get_grade (int num) char s [80];
printf ( "adja évfolyam hallgatói #: \ n"., szám + 1);
kap (s);
visszatérési (atoi (ek));
>
/ * A következtetés osztály felmérések * /
void disp_grades (int g [] [osztályzatok])
int t, i;
a (t = 0; t
for (i = 0; i
>
>
Ábra. Elhelyezése a kétdimenziós tömb a memóriában