[elektro] többdimenziós struktúra c++
Info
info at kiralyelektronika.hu
Mon Jun 3 18:40:37 CEST 2013
Csak megjegyzésként, hogy egy típus definiálása fordításkor felfedheti
az általad említett méretbeli (típusbeli) eltérést.
> 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]
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list