Átalakítása indexek kézzel

Munka kétdimenziós tömbök

Példa dinamikus memória használat

A következő példában, a dinamikus memória tárol a tömb elemei előre meghatározatlan méretű, amelynek bemeneti leállítjuk, amikor a szám a bemeneti folyam nagyobb vagy egyenlő 1e300. Ebben az esetben, az első a tömb allokált memória szegmens maximális méretét, akkor a méret a memória blokk van beállítva megfelelő a tényleges mérete a tömb.

void * malloc (size_t méret)

void * p = malloc (méret);

void * realloc (void * blokk, size_t méret)

void * p = realloc (blokk, méret);

előjel nélküli i, n, maxN, goodIO;

A = (dupla *) malloc (maxN = UINT_MAX);

A (goodIO = n = 0; n

printf ( "A = [.]", n); scanf ( "% LF", temp);

A = (dupla *) realloc (A, n * sizeof (dupla));

/ * Array. Például - a nyomtatást. * /

for (i = 0; i

printf ( "% 10.3lf", A [i]);

if ((i + 6)% 5 == 0) printf ( "\ n");

A maximális szegmens méret byte mindig a legnagyobb értéke előjel nélküli egész szám, amelynek értéke határozza UINT_MAX állandó fejlécfájlba .

A program a kiegészítő Malloc () és realloc (a) figyelemmel kíséri a memória kiosztás. Ezek úgy működnek, exit () a prototípus a fájlban Régen szakítsa meg a programot.

Ha dinamikus kétdimenziós tömb, vannak bizonyos nehézséget okoz az a tény, hogy a C nincs beépített eszközök teszik ki a húr hosszát indexelés során. Ezért a programozónak kell biztosítani arra, hogy index kétdimenziós tömböt. Ezenkívül lehetővé kell tenni, hogy javítsa az átviteli függvény egy dinamikus tömb. A következő szakaszok a mintaprogram tele véletlen értékek egy derékszögű mátrix, fontolja meg a különböző megközelítések a probléma megoldására.

A következő példában egy kétdimenziós tömb képviseli, mint az egydimenziós és kétdimenziós helyét az egyes elemek egydimenziós tömbben által meghatározott összeget az oszlop számát és a sorok számát a munka húr hosszát. Eljárás indexelést ugyanaz a hívó és a hívott programban.

#define MAXVAL 1000

void * malloc (size_t méret);

érvényteleníti RandomMatr (dupla * Matr, int n, int l);

érvényteleníti OutMatr (char * name,

kettős * Matr, int n, int m);

Kapcsolódó cikkek