[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