Aktív témák
-
TheVeryGuest
senior tag
Ha így lenne a C++-ban lenne a világ legpazarlóbb memóriamenedzsere. Akárhánydimenziós tömb egy darabban foglalódik le. Mert így gazdaságos. Ha long matrix[480][640], akkor matrix[ i ] az valóban long [640] -re mutató pointer, de ez valójában egy sima long *-gal ekvivalens.
Ami érdekesebb a C szabványban, hogy pl.:
int vec[5] = { 1, 2, 3, 4, 5 };
esetén vec == i[vec] vagyis vec[0] = 0[vec]
A szabvány nem írja elő, hogy melyik oldalon áll az indexkifejezés és melyiken az indexelendő.
Na, csak sikerült kódrészlettel bekapcsolnom a dőlt betűt.
[Szerkesztve]“Perfection is attained not when there is nothing more to add, but when there is nothing more to remove” Antoine de Saint-Exupéry
-
kisfurko
senior tag
OK. Csupán azt felejtettem el, hogy honnan tudná szegény fordító, mekkora egy sor...
Egyébként lehet kétdimenziós tömböt mutató tömb nélkül is kezelni.
typedef long int ZBUFFER [640][480];
ZBUFFER *tomb;
tomb=(ZBUFFER *)malloc(sizeof(tomb));
Hivatkozni egy elemre a (*tomb)[x][y]-nal lehet.
Gusztustalan, ez van.
Ezért nem használok többdimenziós tömböt... Így is, úgy is ki kell számolni az indexet a memóriában...