Pass kétdimenziós statikus tömb a funkció - verem túlcsordulás orosz

Van egy probléma, az átviteli statikus kétdimenziós tömb a függvény

Kipróbált mind egyszerűen át int ** array int A [3] [4]; Tömegközlekedési (A, 3, 4);

[Hiba] nem tudja konvertálni 'int (*) [3]' a 'int **'







  1. Hogyan adja át a statikus tömb a funkciót. A funkció is el kell fogadnunk a dinamikus tömböket. A túlterhelés, sablonok és STL nem kínál.
  2. 2D statikus tömbök memóriában tárolt lineárisan. Dinamikus tárolt lineáris vagy nem?
  3. Mi kapcsolat statikus 2D tömb mutatókat?

állítsa november 6. '15 at 18:53

Ha egy tömb nyilvánították

nontemplate a funkciója, amely a tömb érvként tűnhet, például a

és felhívta a

Vagy lehet nyilvánítani

Ami ezt a funkciót,

akkor nem adja át egy tömb nyilvánították

Ez azt jelenti, átruházás lehetséges, különböző trükkökkel, de nagy valószínűséggel nem fog működni, mint ahogy várnánk.

Van egy univerzális megközelítés. Értelmezésére bármely két dimenziós tömb, egydimenziós, és továbbítja az értékeket a mérete minden tömb dimenziót.







Itt van egy demonstrációs program

A kimenet a konzolra

Ha írunk egy programot a C, de nem C ++, akkor van egy változó hosszúságú tömbök, és így könnyebb lett volna.

A C ++, ezekre a célokra érdemesebb használni standard class std :: vector

Ami a kérdést

2) Statikus 2D tömbök vannak tárolva lineárisan a memóriában. Dinamikus tárolt lineáris vagy nem?

hogy ha azt eljuttatja a memóriát, mint egy kétdimenziós tömböt, akkor természetes, hogy annak elemei lesznek tárolva lineárisan sorokban. például

Ami ezt a kérdést

3) Milyen kapcsolat van egy statikus 2D tömb mutatókat?

akkor bármilyen tömb (ritka kivételektől eltekintve) implicit módon alakítjuk egy mutatót az első eleme.

A gcc, hogy ezt igen egyszerű.

Akkor át a funkciót, hogy a méretei a mátrix (elég csak az „alsó”), és utalnak elemek az indexek esteststvennym módon. Például:

Itt egy példa fájl, amely bemutatja mindkét változat a program, és az eredményeket a bevezetés:

Ha további kérdései vannak, kérdezze.

Itt látható a verzió rámutatnak a string „sűrű” mátrix.

Vegye statikus mátrixot, ami egy sor mutató, átadja azt az transzponálás funkciót, ami a kupac „sűrű” ültették mátrix és visszatér egy új tömb mutatókat a sort.

Nos, mielőtt elhagyja a memória már a saját szabad?