[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