[elektro] többdimenziós struktúra c++

SZIGETI Szabolcs szigiszabolcs at gmail.com
Mon Jun 3 18:32:09 CEST 2013


Hali!

A C-ben igazából nincs többdimenziós tömb, csak egydimenziós tömbökből
készített tömb. (Sőt igazából tömb sincs, csak pointer).
Ezért n dimenziós tömböt csak úgy tudsz átadni függvényben, ha n-1
dimenziója fix, fordításkor. Magyarul  használhatatlan.
Egyszerű megoldás, egydimenziós tömböt használni és pointeraritmetikával
"többdimenziósítani".

Azaz

int x[10][20]; /* 10x20-as többdim tömb */
void f(int t[10][])
{
/* csak ezt lehet többdimenziós tömbökkel, elég használhatatlan. */
}

Ezért inkább:

int x[10*20]; /* 10x20-as tömb, valójában 200 elem */

void f(int *t, int m, int n) /*átadjuk t pointert, ami az első elemre mutat
és a tömb m x n méretű, aktuális méretét is átadjuk */
{

t[i*m+j]  /*így hivatkozunk az i,j elemre. Ez akárhány dinemzióban működik
természetesen vagy *(t+i*m+j), ugyanaz. /*

}

Szabolcs



2013. június 3. 18:00 Balla Zoltán írta, <zoltan.balla at shopguard.com>:

> Sziasztok
>
> C-s guruktól kérdezem, hogyan tudok egy kétdimenziós struktúrát átadni
> függvény paraméterében
> mutatón keresztül ?
> Most így próbálkoztam:
> void függvény (struct VALAMI **Be)
>
> majd rá hivatkozni -
>     Be[x][y].elem=5;
>
> De úgy tűnik valami nem jó... Hogyan kell ezt korrektül csinálni ?
>
> Zoli
>
> -----------------------------------------
>           elektro[-flame|-etc]


More information about the Elektro mailing list