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

Balla Zoltán sdrlab at yandex.ru
Tue Jun 4 12:43:26 CEST 2013


Feladó: "SZIGETI Szabolcs" <szigiszabolcs at gmail.com>
>De tudsz. Csak neked kell bizonyos adatokat kezelned. A C-ben nem létezik
>tömb. Az index operátor csak egy kényelmesebb írási módja a pointerekkel
>való szorzásnak és összeadásnak. Már volt róla szó, de itt a példa:
>
>int t[5];
>
>mivel t önmagában az első (nulladik elem) címét jelenti, azaz ugyanaz mint
>&t[0] ezért mondjuk t[3] írható úgy is, hogy *(t+3). Hiszen a 3. elem a
>memóriában pont 3 int-nyi távolságra van a 0. elemtől. A fordító tudja,
>hogy  *t int méretű, tehát a 3-at magától beszorozza sizeof (int)-tel.
>Viszont ha t[3] ugyanaz, mint *(t+3), akkor értelemszerűen ez ugyanaz, mint
>*(3+t), hiszen az összeadás kommutatív. Viszont akkor az első lépést
>fordítva alkalmazva, arra kell, hogy jussunk, hogy ez ugyanaz, mint 3[t].
>Ami hülyén néz ki, de eddig minden C fordító megette, ami azt bizonyítja,
>hogy valóban nincsenek tömbök, csak pointerek.
>
>Ez viszont azt jelenti, hogy a fordító általában (ez alól van egy kis
>kivétel, de nem befolyásolja a mostani kérdést) nem tud a tömb méretéről, ő
>csak egy pointert kezel. Vagyis, ha tömböket akarsz átadni pl. függvénynek,
>akkor külön kell arról gondoskodnod, hogy a méretet átadjad.
>
>Ha két dimenziós tömbbel foglalkozol, az valójában egy egydimenziós tömb a
>memóriában, sorfolytonosan tárolva. Ezért ha ezt adod át függvénynek, az
>egyik dimenziót fixre kell venni, hogy a compiler ki tudja számolni, hogy
>hol vannak a sorok. Jobban jársz ilyenkor, ha csinálsz egy tömböt, ami a
>többi tömböt tárolja, mert akkor akármilyen méretet tudsz kezelni, nyilván
>itt is neked kell a méreteket tárolni, és átadni.
>
>Ha ez nem tetszik, akkor válassz olyan nyelvet, amiben valódi tömbök vannak
>(tehát a compiler tárolja a méretét, és ellenőrzi a túlcímzést.)
>
Nem egészen érted a kérdésem....
Én most nem dinamikus, ismeretlen méretű kétdimenziós struktúrát akarok kezelni.... A struktúra 
adott, a dimenziója szintén, a méretét is tudom. Át tudom adni futásidőben...de ha ez nem megy, 
akkor a fix is megteszi! Tehát egy ilyen adatszerkezetet szeretnék generálni a fogadó oldalon, a 
függvényen belül, mert nekem most a kétdimenziójú indexelés lenne célszerű, mivel így is kell 
variálni az indexekkel rendesen, nem szeretném ezt egy egydimenziójú tömbön kínlódva megcsinálni!
Jelenleg a cimre hivatkozva az általad is följebb jelzett mutatóaritmetikával hivatkozok az 
egydimenziós(nak megfelelő) tömb elemeire, és azon belül a struktúra tagjaira. Ez így megy, de nincs 
két dimenziót kezelő indexelésem sem...és ronda a kód, mint az atomháború )) Ez így nem járható út 
nekem... mindenképpen kétdimenziós, indexes elérés kellene....

Zoli 



More information about the Elektro mailing list