- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- HBO Max & OD topic
- Az Apple iPadOS-t is megrendszabályozza az EU
- Az USA nem akarja visszafogni Kína növekedését
- Linux - haladóknak
- Microsoft Excel topic
- Python programozás
- Synology NAS
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
Aktív témák
-
yerico
senior tag
Most lehet, hogy hülyeséget írok, de a *(tomb + j) esetében, mikor a tömb egy long tömb, akkor a tomb+j helyett nem kellene tomb + j*sizeof(long) véletlenül, mivel a long az 4 byte-on tárolódik, így egy 640* 480-as long tömb az 640 * 480 *4 byte nagyságú lesz. Egyébként meg érdemesebb dupla forciklusban tomb[j]-ként használni, mert sokkal jobban átlátható, felesleges egydimenziós tömbként használni. A mutatós címzést nem szoktam használni, áttekinthetetlenné teszi a kódot, pár magasabb szintű kódolási tudásról árulkodik
Persze ekkora tömb már lehet, hogy nem fér a stackbe, ezért kell a dinamikus memóriafoglalás, viszont akkor fel is kell majd a végén szabadítani. -
yerico
senior tag
Ha egydimenziósan foglalod, akkor meg csinálni kell egy függvényt, ami az x, y koordinátákat átalakítja, és a tömböt tomb[x*640 + y]-ként címzi, és visszaadja az értéket. Ha csinálsz erre egy set és egy get függvényt is, akkor máris tudod 2D-sént kezelni.
A sizeoffal való szorzás gyanús, de a pointer + érték az annyi bájttal nagyobb címet adna vissza tudtommal, de rémlik, hogy nem így használtam, mikor anno írtam egy ilyet egy PGSM példaprogramba, hanem tényleg a következő értékre ugrott.
Apropó, miért kell itt long tömbnek lennie, miért nem jó egy sima short int, esetleg egy char? -
-
yerico
senior tag
A kétdimenziós tömbnél ugyebár pointerekre mutató pointertömböd lesz , azaz foglalsz 640 db 480 elemű longra mutató pointernek helyet. Ennek az elemeit már **-gal éred el, és nem sima *-ként. A sima esetben lesz egy 640*480 longot tartalmazó tömbre egy pointered, a 2D esetben egy 640 elemű long pointert tartalmazó tömbre mutató pointered.
Jelen esetben a long és a pointer mind 4 byte-on tárolódik (pointer = long ugyebár), ezért itt megegyezik, de nem feltétlenül fog megegyezni char esetén pl.
Apropó, ez ilyenkor feltételezi, hogy a 480 elemű tömböknek egyesével foglalsz helyet. -
yerico
senior tag
válasz TheVeryGuest #41 üzenetére
Nem olvastad el, hogy azt írtam, nem egy menetben foglalod a tömtöt, hanem 2 menetben, a 480 eleműeket egyesével, és a 640 eleműt is külön, így a 640 eleműd csak pointereket fog tartalmazni.